взаимодействовать объекты в выпадающем списке при создании в MVC - PullRequest
1 голос
/ 17 октября 2011

У меня есть 2 класса: User и Role, у пользователя есть роль

public class User : IPrincipal
{        
    public int UserId { get; set; }

    [Required]
    [Display(Name = "User name")]
    public string Username { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Display(Name = "Created date")]
    public DateTime CreatedDate { get; set; }        

    [Required]
    [Display(Name = "Password question")]
    public string PasswordQuestion { get; set; }

    [Required]
    [Display(Name = "Password anwser")]
    public string PasswordAnswer { get; set; }

    [Display(Name = "Active")]
    public bool IsApproved { get; set; }

    [Display(Name = "Last login date")]
    public DateTime LastLoginDate { get; set; }

    [Display(Name = "Last password changed date")]
    public DateTime LastPasswordChangedDate { get; set; }

    [Display(Name = "Last activity date")]
    public DateTime LastActivityDate { get; set; }

    public virtual Role Role { get; set; }

    public virtual IIdentity Identity { get; set; }
    public virtual bool IsInRole(string role)
    {
        if (Role.Name.ToLower() == role.ToLower())
        {
            return true;
        }
        return false;
    }
} 

public class Role
{
    public int RoleId { get; set; }

    [Required]
    [Display(Name = "Role name")]
    public string Name { get; set; }
}

Я создал UserController с сущностью чтения / записи, в методе Create я создал ViewBag.Role содержит список ролей

public ActionResult Create()
{
    ViewBag.Role = new SelectList(db.Roles, "RoleId", "Name");
    return View();
} 

В представлении создания:

<div class="editor-label">
    @Html.LabelFor(model => model.Role)
</div>
<div class="editor-field">
    @Html.DropDownList("Role")
    @Html.ValidationMessageFor(model => model.Role.RoleId) @* I don't know this is correct? *@
</div>

В представлении создания с атрибутом HttpPost, когда пользователь выбирает одну роль и передает, я не могу получить значение роли.Кто-нибудь, кто знает, как добавить роль в пользователя, выбрав выпадающий список?Я имею в виду, когда я раскрываю роль списка и выбираю там элемент и отправляю, я добавляю одну строку пользователя в таблицу. Спасибо

1 Ответ

0 голосов
/ 02 декабря 2011

Вы можете открыть внешний ключ RoleId, добавив его как свойство пользователя.

Тогда ваше представление будет выглядеть как

<div class="editor-field">
    @Html.DropDownListFor(model => model.RoleId, (SelectList)ViewBag.Role)
    @Html.ValidationMessageFor(model => model.RoleId)
</div> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...