【问题标题】:ASP.NET MVC 4 trying to load data into drop downlist from xml fileASP.NET MVC 4 尝试将数据从 xml 文件加载到下拉列表中
【发布时间】:2013-07-26 01:01:09
【问题描述】:

我正在尝试将 xml 文件加载到 ASP.NET MVC 的下拉列表中。

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();
}

我收到此错误:

DataBinding:“System.Data.DataRow”不包含具有 名称“ID”。

但我可以在 DV1 中看到它已从 xml 文件中读取并包含 ITEM Array 以及 xml 文件中的所有项目。

我是 ASP.NET MVC 的新手,不知道我在做什么...过去使用 webforms 将数据绑定到 .cs 文件中的下拉列表非常容易。这里很混乱。有什么帮助吗?

我是这样解决的

//为 DropDownList Market 加载值 数据集市场DS = new DataSet(); marketDS.ReadXml(Server.MapPath("~/Content//XmlData/Markets.xml"));

        EnumerableRowCollection<DataRow> DR1 = marketDS.Tables["Market"].AsEnumerable();

        List<string> marketList=new List<string>();
        foreach (DataRow dr in DR1)
        {
            marketList.Add(dr.ItemArray[1].ToString());
        }
        ViewBag.Market = new SelectList(marketList.AsEnumerable().ToList());

【问题讨论】:

    标签: xml asp.net-mvc


    【解决方案1】:

    我将在此处采用稍微不同的方法,并改用DropDownListFor HTML 帮助器。

    在您的 ViewModel 中:

    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,您所做的没关系...但是使用模型而不是 ViewBag 更好...编译器将检测错误而不是更改某些内容并在运行时实现...而您正在使用 MVC 的“M” :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多