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() は、SelectedValue プロパティを持つパラメータとして SelectList を受け入れます。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 に答える