我正在使用 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"  />  
}