2012-03-14 38 views
0

當用戶選擇角色中的項目並提交時,模型未填充選定項目。如果我應該以另一種方式進行操作,我可以請一些見解。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)))) 

回答

0

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