Asp.net MVC Nhibernate未收集列表框中的选定项目

问题描述:

当用户选择角色中的项目并提交时,模型未填充选定项目。如果我应该以另一种方式进行操作,我可以请一些见解。Asp.net MVC Nhibernate未收集列表框中的选定项目

模型

public virtual string UserName { get; set; } 
    public virtual string Password { get; set; } 
    public virtual DateTime LastLogin { get; set; } 
    public virtual int FailedAttempts { get; set; } 
    public virtual bool IsLocked { get; set; } 
    public virtual IList<Role> Roles { get; set; } 

控制器

[HttpPost] 
    public ActionResult Edit(Login user) 
    { 
     var u = repoLogin.Update(user); 
     repoLogin.Save(u); 

     return View(u); 
    } 

查看

 <label>Roles</label> 
     @Html.ListBoxFor(m => m.Roles, new SelectList(Enum.GetValues(typeof(LiveReport.Domain.Enum.UserRoles)))) 

Role是一个复杂的对象。 ListBoxFor发送与所选值相对应的简单字符串列表。

所以你可以有将举行选定值的属性:

public virtual IList<string> SelectedRoles { get; set; } 

,然后绑定选择列表吧:

@Html.ListBoxFor(
    m => m.SelectedRoles, 
    new SelectList(
     Enum.GetValues(typeof(LiveReport.Domain.Enum.UserRoles)) 
    ) 
) 

而且你似乎可以用一些枚举填充选择列表项目。所以你可以使用相同的枚举作为属性来绑定列表:

public virtual IList<UserRoles> SelectedRoles { get; set; } 
+0

这仍然不会绑定它们,因为用户角色的用户列表框中没有选择任何角色。 – 2012-03-15 18:41:36