2010-04-14 38 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 })) %> 
相關問題