将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>
。 ,您将能够像控制器一样处理数据。
答
我猜你已经错过了一些代码,因为你没有在这个代码中的任何点将项目分配给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
如何从我的代码中继承viewPage?你的意思是返回视图(项目)而不是视图(米)? – bdd 2009-01-06 00:01:23