我曾经处理过类似的情况
你可以做什么,你可以使用 for 循环并使用隐藏元素以 POST Action 的形式获取 Id
@for (int i = 0; i < Model.RolesList.Count; i++)
{
@Html.CheckBoxFor(o => o.RolesList[i].UserRole.Checked)//checked is a bit that represents selected/unselected
@Html.Label(Model.RolesList[i].UserRole.Name)
@Html.HiddenFor(o => o.RolesList[i].UserRole.ID)
}
在表单发布中,当您将表单与 List of 绑定时,RolesList
您将获得一个 UserRole
具有 IdUserRole
和选中位来表示它是被选中还是未选中的
就我而言,UserRole
不是布尔值,而是以下
public class UserRole
{
public long Id{set;get;}
public String Name {set; get;}
Public bool Checked {set;get;}
}
但是由于您无法将UserRole
from更改bool
为我建议的内容,因此您可以尝试以下操作
@for (int i = 0; i < Model.RolesList.Count; i++)
{
@Html.CheckBoxFor(o => o.RolesList[i])
@Html.Label(Model.RolesList[i].Name) // what ever you want to display in the label
@Html.HiddenFor(o => o.RolesList[i].ID) // Id to uniquely identify each Role in RoleList
}