Как выполнить привязку к списку свойств в качестве свойства модели в MVC 3 Razor?

У меня есть модель, которая выглядит примерно так:

public class EditUserViewModel
    {
        public EditUserViewModel()
        {

        }
        public EditUserDataModel User { get; set; }
    }

С объектом поддержки, который выглядит следующим образом:

public class EditUserDataModel
{
    public EditUserDataModel()
    {
        Roles = new List<UserRoleListDataModel>();
    }
    [DisplayName("First Name")]
    public string FirstName { get; set; }
    [DisplayName("Last Name")]
    public string LastName { get; set; }
    [DisplayName("Full Name")]
    public string FullName { get { return FirstName + " " + LastName; } }
    public List<UserRoleListDataModel> Roles { get; set; }
}

И UserRoleListDataModel выглядит следующим образом:

public class UserRoleListDataModel
{
    public Guid Id { get; set; }
    public string RoleName { get; set; }
    public bool UserIsInRole { get; set; }
}

Затем, в моем файле Razor, я использую все это следующим образом:

@foreach (var role in Model.User.Roles)
{
<tr>
    <td>@role.RoleName</td>
    <td>@Html.CheckBoxFor(x=>role.UserIsInRole)</td>
</tr>
}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я отправляю форму и нажимаю на действие контроллера, список ролей не заполняется в моей новой модели.

Вот как выглядит действие отправки на контроллере:

public ActionResult EditUser(EditUserViewModel model) // model.User.Roles is empty.
{
    // Do some stuff...
    return RedirectToAction("UserList");
}

У кого-нибудь есть предложения?

5
задан Joe 16 March 2012 в 16:12
поделиться