复选框用于主列表并已选中



我有一个模型,它包含一个属性,该属性是其他对象的列表。还有一个所有子对象的主列表。我需要以复选框的形式列出所有主对象,但只检查分配给主模型的对象。这需要在编辑器模板中完成。

例如:

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。

编辑器模板:

@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)
{
    //...
}

最新更新