1

asp.net MVC 4を使用しています。注: これには配列を使用しています。リストの使用については常に知っていますが、これは配列でなければなりません。

QUESTION
これは非常に長いリストで、たくさんのチェックボックスがあります。これをより使いやすい UI にパッケージ化するために、すべての証明書を含むドロップボックスが必要です。そして、「必須の証明書を追加する」というボタンと、「望ましい証明書を追加する」というボタンがあります。

私の解決策(自由に批判してください)
パーツを作成
する ビューモデルに2つの文字列プロパティを交互に追加/または2つの配列
ドロップダウンリストを作成します。
2 つのボタンを作成します (1 つは必須、2 番目は望ましい)
2 つの非表示フィールドを作成します
論理部分
ボタンをクリックすると、ドロップダウン リストの証明書の値が「必須」または「望ましい」の非表示フィールドに追加/追加されます。
コントローラーで文字列を「,」で分割し、選択した「必須」/「望ましい」証明書の配列を構築します。

それは特に醜いですか、それともどうすればいいですか?

私は次の見解を持っています

@using (Html.BeginForm())
{
    for (int i = 0; i <= Model.Certificates.Count - 1; i++)
    {
       @Html.HiddenFor(x => x.Certificates[i].Value)
       @Html.HiddenFor(x => x.Certificates[i].Name)
       @Html.CheckBoxFor(x => x.Certificates[i].Checked)
       @Html.LabelFor(x => x.Certificates[i].Checked, Model.Certificates[i].Name)     
       @Html.DropDownListFor(m => m.Certificates[i].SearchIncluded, 
            new SelectList(new [] 
          { new { Selected = true, Text = "Not included", Value = "Not included"},
            new  { Selected = false, Text = "Mandatory", Value = "Mandatory"}, 
            new  { Selected = false, Text = "Desirable", Value = "Desirable"},         
          }, "Value","Text","Selected"));

    <br />
}

<Input type = "submit"  Name = "SearchButton"  value = "Search"  />  

}

4

1 に答える 1