複数のDropDownListを表示したいとしましょう。値は同じですが、ビューでは、それぞれの値の名前とドロップダウン内のすべての値の数として表示する必要があります。以下のデータと要件のサンプルをご覧ください。Asp.net MVC C#複数のドロップダウンリストを表示して保存するためのバインド
ID 1,2,3,4,5
名A、B、C、D、E
図今[A] ==== [1,2として5ドロップダウンリストを作成する必要があります、3,4,5]、[B] ==== [1,2,3,4,5]など。
複数のDropDownListを表示したいとしましょう。値は同じですが、ビューでは、それぞれの値の名前とドロップダウン内のすべての値の数として表示する必要があります。以下のデータと要件のサンプルをご覧ください。Asp.net MVC C#複数のドロップダウンリストを表示して保存するためのバインド
ID 1,2,3,4,5
名A、B、C、D、E
図今[A] ==== [1,2として5ドロップダウンリストを作成する必要があります、3,4,5]、[B] ==== [1,2,3,4,5]など。
私がこの状況で行うことは、@ Matteo1010の提案を受け取り、ビューモデルを作成することです。私は最近これをやらなければならなかったので、すぐに利用できる解決策があります。
まず、ドロップダウンリストに必要な値を含むモデルを作成します。一般的にこれらは、今、あなたはもちろんDropDownA
のリストpublic class MyViewModel
{
List<DropDownA> dropDownA {get;set;}
public IEnumerable<SelectListItem> ddaSLI { get { return new SelectList(dropDownA, "id", "value"); } }
}
とViewModelには、あなたがリストに
for(int i = 0; i < YourItems.Count; i++)
{
dropDownA.Add(new DropDownA { id = i, value = "something", IsSelected = false});
}
を初期化する必要があるとしているしたい
public class DropDownA
{
public int id {get;set;}
public string value {get;set;}
public bool IsSelected{get;set;}
}
ようなものになるだろうビューではレンダリングが簡単でモデルバインディングもあります
@Html.DropDownListFor(model => model.id, Model.ddaSLI)
他のドロップダウンを繰り返してみてください。すべてうまくいくはずです。 :)
ビューモデル
public class CustomViewModel
{
public string A { get; set;}
public string B { get; set;}
public string C { get; set;}
public string D { get; set;}
public string E { get; set;}
}
コントローラ
public ActionResult Test()
{
List<SelectListItem> lista = new List<SelectListItem>();
lista.Add(new SelectListItem()
{
Text = "1",
Value = "1"
});
lista.Add(new SelectListItem()
{
Text = "2",
Value = "2"
});
lista.Add(new SelectListItem()
{
Text = "3",
Value = "3"
});
lista.Add(new SelectListItem()
{
Text = "4",
Value = "4"
});
lista.Add(new SelectListItem()
{
Text = "5",
Value = "5"
});
ViewBag.list = lista;
return View(new CustomViewModel());
}
[HttpPost]
public ActionResult Test(CustomViewModel customViewModel)
{
//your code
//if return the same view create again the List<SelectListItem>
return View(customViewModel);
}
ビュー
@model test.Models.CustomViewModel
@{
ViewBag.Title = "Test";
List<SelectListItem> list = ViewBag.list as List<SelectListItem>;
}
<h2>Test</h2>
@using (Html.BeginForm())
{
<div>
@Html.DropDownListFor(model => model.A, new SelectList(list))
</div>
<div>
@Html.DropDownListFor(model => model.B, new SelectList(list))
</div>
<div>
@Html.DropDownListFor(model => model.C, new SelectList(list))
</div>
<div>
@Html.DropDownListFor(model => model.D, new SelectList(list))
</div>
<div>
@Html.DropDownListFor(model => model.E, new SelectList(list))
</div>
}
ホープこれは、MVC C#asp.nertであるあなた
助けることができます –
こんにちは、私はあなたにお勧めします5つのプロパティを持つViewModelクラス。ビューでは、DropDownListForを使用します(選択リストに値とテキストを渡します)。フォームをポストすると、コントローラはviewModelにデータをバインドし、その値を使用できます – Matteo1010
このサンプルを提供できますか –