1

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

}

4

1 回答 1

1

我想我有一些批评

  • 为添加证书表单创建部分视图。
  • 可能为循环内的证书显示创建部分视图,因此循环看起来像

    @Html.Parital("CertificatePartial", x.Certificates[i])

  • 如果您的“强制”或“理想”证书的表格相同,请在“添加证书”表格底部有一个“保存”按钮。如果表格相同,则强制或理想条件应该是证书的属性。可以使用表单上的单选按钮将其包含在内,以便用户可以在“强制”或“理想”之间进行选择。

我还有另一个关于它的工作方式的可能性,但这是基于一些我不太了解您页面的意图或布局的事情的推测

  • 您总是可以使用 ajax 表单帖子来保存新的认证数据,然后使用 javascript 结果将其附加到您的认证列表中,即
 public ActionResult AddCertificate (AddCertificateViewModel model){
    ...save to database
    return Partial("CertificateParital", CertificateModel);
 }

你可以通过使用 Ajax 表单来做到这一点

@using(Ajax.BeginForm("action","controller",new AjaxOptions{InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "CertificationsListContainer"}))

我有点假设这与博客文章和评论的工作方式相同。

于 2013-06-16T03:53:44.150 回答