0

我的模型中有一个选项列表(IEnumerable< SelectListItem >),我想在视图中的多个下拉列表中使用它。但是这些下拉列表中的每一个都可能有不同的选定选项。

如果使用 Html.DropDownList 助手,是否有一种简单的方法来简单地指定应该选择哪个?

此时,我能看到的唯一方法是自己生成 html 并遍历选项列表,如下所示:

<% for(int i=0; i<10; i++) { %>
    <select name="myDropDown<%= i %>">
        <% foreach(var option in Model.Options) { %>
        <option value="<%= Html.Encode(option.optValue) %>" <%if(ShouldBeSelected(i)) {%> selected="selected"<% } %>><%= Html.Encode(option.optText) %></option>
        <% } %>
    </select>
<% } %>
4

3 回答 3

3

Html.DropDownList() 接受 SelectList 作为具有 SelectedValue 属性的参数。在创建 SelectList 并将 SelectList 传递给 Html.DropDownList() 时指定所选项目。

于 2010-04-14T23:24:15.963 回答
1

具有“Id”和“Name”属性的“Item”
类 ViewModel 类具有“SelectedItemId”属性
items = IEnumerable<Item>

<%=Html.DropDownList("selectname", items.Select(i => new SelectListItem{ Text = i.Name, Value = i.Id.ToString(), Selected = Model.SelectedItemId.HasValue ? i.Id == Model.SelectedItemId.Value : false })) %>
于 2010-04-15T07:09:31.313 回答
-1

这是一个页面上有 7 个下拉菜单的示例,每个下拉菜单都有相同的 5 个选项。每个下拉菜单都可以选择不同的选项。

在我看来,我的表单中有以下代码:

<%= Html.DropDownListFor(m => m.ValueForList1, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList2, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList3, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList4, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList5, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList6, Model.AllItems)%>
<%= Html.DropDownListFor(m => m.ValueForList7, Model.AllItems)%>

然后我有一个像这样的视图模型:

public class HomePageViewModel
{
    public List<SelectListItem> AllItems { get; set; }

    public string ValueForList1 { get; set; }
    public string ValueForList2 { get; set; }
    public string ValueForList3 { get; set; }
    public string ValueForList4 { get; set; }
    public string ValueForList5 { get; set; }
    public string ValueForList6 { get; set; }
    public string ValueForList7 { get; set; }

    public HomePageViewModel()
    {
        AllItems = new List<SelectListItem> 
        {
            new SelectListItem {Text = "First", Value = "First"},
            new SelectListItem {Text = "Second", Value = "Second"},
            new SelectListItem {Text = "Third", Value = "Third"},
            new SelectListItem {Text = "Fourth", Value = "Fourth"},
            new SelectListItem {Text = "Fifth", Value = "Fifth"},
        };
    }
}

现在在您的控制器方法中,声明如下:

        public ActionResult Submit(HomePageViewModel viewModel)

viewModel.ValueForList1 的值将设置为选定的值。

当然,我建议使用数据库中的某种枚举或 id 作为您的值。

于 2010-04-15T06:58:27.983 回答