我有一个包含属性的模型,该属性是其他对象的列表。还有一个包含所有子对象的主列表。我需要以复选框的形式列出所有主对象,但只检查分配给主模型的主对象。这需要在编辑器模板中完成。
例如:
public class User
{
// This contains a list of all roles the user belongs to
public List<Role> Roles { get; set; }
{
public class Role
{
public string Name { get; set; }
public int ID { get; set; }
}
public class UserAdminModel
{
public List<User> Users { get; set; }
}
主要观点
@model UserAdminModel
@Html.EditorFor(x => x.Users)
编辑器模板
@model User
<table>
<colgroup>
<col class="checkbox-column"/>
<col/>
<col style="width:70px;"/>
</colgroup>
<tbody>
@foreach (Role role in allRoles)
{
<tr>
<td>@Html.CheckBoxFor( ... )</td>
<td>@role.ID
<td>@role.Name</td>
</tr>
}
</tbody>
</table>
这里的主要问题是Html.CheckBoxFor部分。我需要确保在这里获得用户的正确ID,以便它将模拟绑定。像User_ 0 _Role_3。
答案 0 :(得分:0)
编辑模板:
@model User
<table>
<colgroup>
<col class="checkbox-column"/>
<col/>
<col style="width:70px;"/>
</colgroup>
<tbody>
@for (var i = 0; i < Model.Roles.Count; i++)
{
<tr>
<td>@Html.HiddenFor(x => x.Id, Model.Id)
@Html.HiddenFor(x => x.Roles[i].Id)
@Html.CheckBoxFor(x => x.Roles[i].Checked)</td>
<td>@Model.Roles[i].Id</td>
<td>@Model.Roles[i].Name</td>
</tr>
}
</tbody>
</table>
角色类:
public class Role
{
public string Name { get; set; }
public int Id { get; set; }
public bool Checked { get; set; }
}
动作:
[HttpPost]
public ActionResult Index(UserAdminModel model)
{
//...
}