Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC 4试图将数据从xml文件加载到下拉列表中_Xml_Asp.net Mvc - Fatal编程技术网

ASP.NET MVC 4试图将数据从xml文件加载到下拉列表中

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(

我正在尝试将一个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();
    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:)