@ Html.DropDownListを使用して、ビュー内に同じ値を持つ複数のドロップダウンボックスを表示するとします。ViewBagのようなものを返された各月にバインドすることなく、これらのドロップダウンボックスをすべてレンダリングできる簡単な方法はありますか?
例えば:
コントローラ
List<SelectListItem> items = new List<SelectListItem>();
var values = (from v in db.Values select v);
foreach (var value in values)
{
items.Add(new SelectListItem { Text = value.Name, Value = value.Id });
}
ViewBag.Values = PopulateSelectList("Values");
意見
@Html.DropDownList("Values")
しかし、目標は次のようなものを持つことです
<div class="control-group">
@Html.LabelFor(model => model.DesignStyle)
<div class="controls">
@Html.DropDownList("Values") @Html.DropDownList("Values")
@Html.DropDownList("Values") @Html.DropDownList("Values")
@Html.DropDownList("Values") @Html.DropDownList("Values")
@Html.DropDownList("Values") @Html.DropDownList("Values")
@Html.DropDownList("Values") @Html.DropDownList("Values")
</div>
</div>
@foreach (item in Model)
私の推測では、ビューの各ドロップダウンにデータを入力するには、なんらかの種類が必要になると思います
これは、何かを実現する方法についての私の最初の考えのサンプルです。
List<SelectListItem> results = new List<SelectListItem>();
SelectListItem item = null;
var values = (from v in db.Values select v);
for (int i = 0; i <= 15; i++)
{
item = new SelectListItem();
item.Text = "Select a value";
item.Value = "1";
results.Add(item);
foreach (var thread in threads)
{
item.Text = thread.Name;
item.Value = thread.Id;
results.Add(item);
}
}
私がしたくないのは、SelectListItemに複数回データを入力し、それぞれを個別のViewBagアイテムに配置するロジックを複製することです。