我正在使用 asp.net MVC 4。注意我为此使用了数组。我一直都知道列表使用 em,但这应该是数组。
问题
现在这是一个很长的列表和很多复选框。为了将其打包成更用户友好的 UI,我想要一个包含所有证书的保管箱。还有一个显示“添加强制性证书”的按钮以及一个显示“添加所需证书”的按钮。
我的解决方案(随意批评)
创建部分
交替添加两个字符串属性到视图模型/或两个数组
创建一个下拉列表。
创建两个按钮(一个用于强制,第二个用于可取)
创建两个隐藏字段
逻辑部分
在按钮上单击将下拉列表中证书的值添加/附加到“强制”或“可取”的隐藏字段。
在控制器中拆分“,”上的字符串,并构建选择的“强制”/“理想”证书数组。
那是特别难看还是我该怎么做?
我有以下观点
@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" />
}