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" />
}