0

ASP.NET MVC のドロップダウン リストに xml ファイルを読み込もうとしています。

私はこの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 ファイルから読み取られ、xml ファイルのすべての項目を含む ITEM 配列が含まれていることがわかります。

ASP.NET MVC は初めてで、自分が何をしているのかわかりません...以前は、.cs ファイルのドロップダウン リストにデータをバインドする Web フォームを使用するのは非常に簡単でした。ここはかなり紛らわしいです。何か助けはありますか?

私はそれをこのように仕上げました

//DropDownList Market DataSet の値を読み込みます marketDS = 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());
4

1 に答える 1

0

ここでは少し異なるアプローチを取り、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)
于 2013-04-18T18:04:43.077 に答える