2010-04-14 16 views
0

我有我的模型中的选项列表(IEnumerable < SelectListItem>),我想在我的视图中的多个下拉列表中使用。但是每个下拉菜单都可以有不同的选项。指定所选选项到ASP.NET MVC中的下拉列表最简单的方法

是否有一种简单的方法来简单地指定如果使用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> 
<% } %> 

回答

3

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

-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作为您的值。

1

类 '项目' 具有属性 'ID' 和 '名称'
ViewModel类有一个属性 'SelectedItemId'
项目= IEnumerable的<项目>

<%=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 })) %> 
相关问题