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-")