私は一度同様の状況を処理しました
forループを使用し、非表示の要素を使用してフォームPOSTアクションで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 にバインドすると、選択されているか選択されていないかを表すId とチェックされたビットを持つ がRolesList
取得 されますUserRole
UserRole
私の場合、UserRole
ブールではなく、次のとおりです
public class UserRole
{
public long Id{set;get;}
public String Name {set; get;}
Public bool Checked {set;get;}
}
UserRole
ただし、 frombool
を私が提案したものに変更することはできないため、次のことを試すことができます
@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
}