Won*_*ing 0 c# asp.net asp.net-mvc
我是MVC的新手,面临一个问题.我有一个xml文件,我正在使用Linq检索其值到xml并将其分配给ViewData.Controller.cs
var res=from x in doc.Descendants("person")
select new
{
Fname=x.Element("fname").Value,
Lname=x.Element("lname").Value
};
ViewData["Persons"]=res;
Run Code Online (Sandbox Code Playgroud)
在视图中我正在尝试
<% foreach (var item in ViewData["Persons"])
{ %>
<li> <%= item.Fname %> </li>
<% } %>
Run Code Online (Sandbox Code Playgroud)
但foreach(ViewData ["Persons"]中的var项目给出类型转换错误..应该是csting的确切类型,以便我可以以item.Fname格式检索值.
谢谢.
ViewData
虽然可能,但使用不是从控制器传递信息到视图的最优雅方式.使用特定的视图模型可以使代码更简单,更清晰,并解决了转换问题.
首先尝试定义模型:
public class ViewModelElement
{
public string Fname { get; set; }
public string LName { get; set; }
}
public class ViewModel
{
public List<ViewModelElement> Elements { get; set; };
}
Run Code Online (Sandbox Code Playgroud)
然后使用您的模型:
public ActionResult ActionName()
{
//get doc somehow
var model = new ViewModel();
//When querying by linq to xml, you can create ViewModelElement instead of anonymous class
model.Elements = (from x in doc.Descendants("person")
select new ViewModelElement
{
Fname=x.Element("fname").Value,
Lname=x.Element("lname").Value
}).ToList();
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中使用您的模型:
<% foreach (var item in model.Elements) { %>
<li> <%= item.Fname %> </li>
<% } %>
Run Code Online (Sandbox Code Playgroud)
视图必须继承System.Web.Mvc.ViewPage<ViewModel>
.