假设我想使用@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)
来填充视图上的每个 DropDowns
这是我最初关于如何进行的想法的示例。
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 项目中。