C# 虽然我建议您使用与复选框相关联的标签,并且Access\u Name属性的隐藏输入似乎没有必要,但代码看起来还可以 @for (int i = 0; i < Model.SecurityAccessList.Count; i++) { @Html.CheckBoxFor(m => m.SecurityAccessList[i].IsSelected) @Html.LabelFor(m => m.SecurityAccessList[i].IsSelected, Model.SecurityAccessList[i].Access_Name) @Html.HiddenFor(m => m.SecurityAccessList[i].ID) }

C# 虽然我建议您使用与复选框相关联的标签,并且Access\u Name属性的隐藏输入似乎没有必要,但代码看起来还可以 @for (int i = 0; i < Model.SecurityAccessList.Count; i++) { @Html.CheckBoxFor(m => m.SecurityAccessList[i].IsSelected) @Html.LabelFor(m => m.SecurityAccessList[i].IsSelected, Model.SecurityAccessList[i].Access_Name) @Html.HiddenFor(m => m.SecurityAccessList[i].ID) },c#,asp.net,asp.net-mvc,entity-framework,http-post,C#,Asp.net,Asp.net Mvc,Entity Framework,Http Post,这会产生完全相同的结果,尽管我怀疑您所需要的只是将属性设置为List 接下来是ActiveDirectory objAD=newActiveDirectory()位,其中似乎插入了“默认”或null项以用于选择列表,这也是错误的。同样,您使用的唯一属性是displayName,但在任何情况下都要删除它,并使用接受optionLabel @Html.DropDownListFor(m => m.YourProperty, Model.ADList, "-Please select-") 这

这会产生完全相同的结果,尽管我怀疑您所需要的只是将属性设置为
List

接下来是
ActiveDirectory objAD=newActiveDirectory()位,其中似乎插入了“默认”或
null
项以用于选择列表,这也是错误的。同样,您使用的唯一属性是
displayName
,但在任何情况下都要删除它,并使用接受
optionLabel

@Html.DropDownListFor(m => m.YourProperty, Model.ADList, "-Please select-")
这将添加一个
null
选项
-请选择-
,该选项可与
[必需]
属性关联使用


最后,
if(ModelState.IsValid)
块中的代码毫无意义。您甚至不使用
sb
的值(不确定它的作用是什么),然后每次
IsSelected=true
都尝试将
change
的同一个实例添加到数据库中,只是它只添加了一次,因为一旦添加,执行重定向。

尝试在更改类中初始化SecurityAccessList,例如:公共部分类更改{public Change(){ChangeRadioList=new List();}//rest of properties}好的,我可以检索我的复选框列表,但现在我无法将逗号分隔的值发布到其他表中。我该怎么做呢。我只想将数据以列的形式发布回变更模型。我似乎很难理解如何将值发回数据库。这很容易做到,但问题是为什么?您不应该在数据库中存储逗号分隔的值来表示关系(如果您存储了用
[Flags]
属性修饰的
枚举
值,则这是唯一适用的情况)。当然,在读取数据时,您需要再次解析它。要准确理解您对tos代码的操作有点困难,但我怀疑您需要一个包含
employeeID
SecurityAccessListID
SecurityAccessListName
字段的表
<table border="0" width="1000" cellpadding="5" cellspacing="5">
    @for (int i = 0; i < Model.SecurityAccessList.Count; i++)
    {
        <tr>
            <td width="200">
                @Html.CheckBoxFor(m => Model.SecurityAccessList[i].IsSelected)
                @Model.SecurityAccessList[i].Access_Name
                @Html.HiddenFor(m => Model.SecurityAccessList[i].ID)
                @Html.HiddenFor(m => Model.SecurityAccessList[i].Access_Name)
            </td>
        </tr>
    }
@for (int i = 0; i < Model.SecurityAccessList.Count; i++)
{
  @Html.CheckBoxFor(m => m.SecurityAccessList[i].IsSelected)
  @Html.LabelFor(m => m.SecurityAccessList[i].IsSelected, Model.SecurityAccessList[i].Access_Name)
  @Html.HiddenFor(m => m.SecurityAccessList[i].ID)
}
<input type=checkbox" name="SecurityAccessList[0].IsSelected" ...>
<input type=checkbox" name="SecurityAccessList[1].IsSelected" ...>
SelectList sl = new SelectList(new List<string>() { "Add Access", "Remove Access", "Change Access" });
@Html.DropDownListFor(m => m.YourProperty, Model.ADList, "-Please select-")