将XML解析列表从控制器传递到ASP.NET MVC中的视图

问题描述:

我正在尝试将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数据控制器?

第一..你必须返回数据到视图模式...

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

我猜你已经错过了一些代码,因为你没有在这个代码中的任何点将项目分配给ViewData。

当您尝试访问视图中的项目时,会发生什么情况?您是否可以从视图中添加代码以显示您想要执行的操作?

我不知道你是否有意通过该方法中途切断了你的代码。但是,你应该能够做到以下几点,以从你的控制器动作视图让您的元素:

ViewData["XmlItems"] = items; 

那么在你看来,你叫

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

谢谢,我不知道你可以通过项目列表查看视图数据。 woops。像我想的那样愚蠢! – bdd 2009-01-05 05:26:15