Флажок для основного списка и выбранных - PullRequest
1 голос
/ 01 февраля 2012

У меня есть модель, которая содержит свойство, представляющее собой список других объектов.Существует также основной список всех дочерних объектов.Мне нужно перечислить все главные объекты в виде флажков, но только те, которые назначены основной модели.Это необходимо сделать в шаблоне редактора.

Например:

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.

1 Ответ

0 голосов
/ 01 февраля 2012

Шаблон редактора:

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