ASP.NET MVC 4试图将数据从xml文件加载到下拉列表中
我正在尝试将一个xml文件加载到ASP.NET MVC中的dropdownlist中 在ASP.NET MVC 4试图将数据从xml文件加载到下拉列表中,xml,asp.net-mvc,Xml,Asp.net Mvc,我正在尝试将一个xml文件加载到ASP.NET MVC中的dropdownlist中 在layout.cshtml中,我有这样的dropdwnlist @Html.DropDownList("Market", ViewBag.Market as SelectList, new { id = "Market" }) 在控制器中,我从xml文件中读取并分配如下内容: public ActionResult Index() { DataSet marketDS = new DataSet(
layout.cshtml
中,我有这样的dropdwnlist
@Html.DropDownList("Market", ViewBag.Market as SelectList, new { id = "Market" })
在控制器中,我从xml文件中读取并分配如下内容:
public ActionResult Index()
{
DataSet marketDS = new DataSet();
marketDS.ReadXml(Server.MapPath("~/Content//XmlData/Markets.xml"));
EnumerableRowCollection<DataRow> DV1 = marketDS.Tables["Market"].AsEnumerable();
ViewBag.Market= new SelectList(DV1.ToList<DataRow>(), "ID", "Value");
return View();
}
public ActionResult Index()
{
DataSet marketDS=新数据集();
ReadXml(Server.MapPath(“~/Content//XmlData/Markets.xml”);
EnumerablerRowCollection DV1=marketDS.Tables[“Market”].AsEnumerable();
ViewBag.Market=新选择列表(DV1.ToList(),“ID”,“Value”);
返回视图();
}
我得到这个错误:
数据绑定:“System.Data.DataRow”不包含具有
名称“ID”
但我可以在DV1中看到它从xml文件中读取,并包含包含xml文件中所有项的项数组
我是ASP.NETMVC新手,不知道我在做什么。。。使用webforms将数据绑定到.cs文件中的下拉列表非常容易。这里很混乱。有什么帮助吗
我是这样想的
@Html.DropDownList("Market", ViewBag.Market as SelectList, new { id = "Market" })
//加载DropDownList市场的值
DataSet marketDS=新数据集();
ReadXml(Server.MapPath(“~/Content//XmlData/Markets.xml”)
EnumerablerRowCollection DR1=marketDS.Tables[“Market”].AsEnumerable();
List marketList=新列表();
foreach(DR1中的数据行dr)
{
添加(dr.ItemArray[1].ToString());
}
ViewBag.Market=newselectList(marketList.AsEnumerable().ToList());
在这里,我将采用稍微不同的方法,使用DropDownList for
HTML帮助程序
在您的视图模型中:
public SelectList Items { get; set; }
var model = new YourViewModel();
model.Items = new SelectList(DV1.ToList<DataRow>(), "ID", "Value");
return View("~/Views/Home/Index.cshtml", model);
@Html.DropDownListFor(m => m.Items, Model.Items)
在您的控制器中:
public SelectList Items { get; set; }
var model = new YourViewModel();
model.Items = new SelectList(DV1.ToList<DataRow>(), "ID", "Value");
return View("~/Views/Home/Index.cshtml", model);
@Html.DropDownListFor(m => m.Items, Model.Items)
可能是@Html.DropDownList(m=>m.Market,Model.Items)谢谢你的回答我如上所述计算出来的,不知道这是否是最好的方法,但有效:-)@Lav,你做的一切都没问题。。。但是使用模型而不是视图包更好。。。编译器将检测错误,而不是更改某些内容,并在运行时实现。。。您使用的是MVC的“M:)