2009-01-05 92 views
4

我正在嘗試將XML列表傳遞給視圖,但是我一旦遇到視圖就遇到了麻煩。將XML解析列表從控制器傳遞到ASP.NET MVC中的視圖

我的控制器:

public ActionResult Search(int isbdn) 
    { 
     ViewData["ISBN"] = isbdn; 
     string pathToXml= "http://isbndb.com/api/books.xml?access_key=DWD3TC34&index1=isbn&value1="; 
     pathToXml += isbdn; 
     var doc = XDocument.Load(pathToXml); 
     IEnumerable<XElement> items = from m in doc.Elements() 
        select m; 

將我的觀點是什麼樣的?我是否需要合併某種類型的XML數據控制器?

回答

3

第一..你必須返回數據到視圖模式...

public ActionResult Search(int isbdn) 
    { 
     ViewData["ISBN"] = isbdn; 
     string pathToXml= "http://isbndb.com/api/books.xml?access_key=DWD3TC34&index1=isbn&value1="; 
     pathToXml += isbdn; 
     var doc = XDocument.Load(pathToXml); 
     IEnumerable<XElement> items = from m in doc.Elements() 
        select m; 
return view(m); 
} 
在你的代碼背後

你要繼承

ViewPage < IEnumerable<XElement>> 

而且你的ViewData.Modal將是一個強類型的IEnumerable<XElement>。 ,您將能夠像控制器一樣處理數據。

+0

如何從我的代碼中繼承viewPage?你的意思是返回視圖(項目)而不是視圖(米)? – bdd 2009-01-06 00:01:23

0

我猜你已經錯過了一些代碼,因爲你沒有在這個代碼中的任何點將項目分配給ViewData。

當您嘗試訪問視圖中的項目時,會發生什麼情況?您是否可以從視圖中添加代碼以顯示您想要執行的操作?

3

我不知道你是否有意通過該方法中途切斷了你的代碼。但是,你應該能夠做到以下幾點,以從你的控制器動作視圖讓您的元素:

ViewData["XmlItems"] = items; 

那麼在你看來,你叫

<% foreach(XElement e in ViewData["XmlItems"] as IEnumerable<XElement>) { %> 
    <!-- do work here --> 
<% } %> 
+0

謝謝,我不知道你可以通過項目列表查看視圖數據。 woops。像我想的那樣愚蠢! – bdd 2009-01-05 05:26:15

相關問題