2009-09-10 91 views
0

我有一個列表框的問題,我要添加驗證到您添加/編輯用戶的頁面,並且當頁面加載時,我添加一個模型狀態錯誤強制它停止,它抱怨我的列表框不包含任何數據與密鑰。與模型回發列表框問題

在網頁上,我有:

<p> 
      <label for="Email">E-post: *</label><br /> 
      <%= Html.TextBox("Email", Model.User.Email)%> 
      <%= Html.ValidationMessage("Email", "*") %> 
     </p> 
     <p> 
      <label for="Password">Lösenord: *</label><br /> 
      <%= Html.TextBox("Password", Model.User.Password) %> 
      <%= Html.ValidationMessage("Password", "*") %> 
     </p> 
     <p> 
      Användargrupper: <br /> 
      <%= Html.ListBox("selUsergroups")%> 
      <br /> 
     </p> 

而在我的控制,我有:

public ActionResult UserEdit(int? userID) 
    { 
     User u; 

     if (userID == null) 
     { 
      u = new User(); 
     } 
     else 
     { 
      u = _us.GetUsers(userID.Value).First(); 
      u.Usergroups.Load(); 
     } 

     List<int> selectedUsergroupIDs = new List<int>(); 

     foreach (Usergroup item in u.Usergroups) 
     { 
      selectedUsergroupIDs.Add(item.UsergroupID); 
     } 

     MultiSelectList UsergroupID = new MultiSelectList(_ug.GetUsergroups(), "UsergroupID", "UsergroupName", selectedUsergroupIDs); 

     ViewData["UsergroupID"] = UsergroupID; 


     return View("UserEdit", new UserAdminEditViewModel { User = u, Usergroups = _ug.GetUsergroups(), selUsergroups = new MultiSelectList(_ug.GetUsergroups(), "UsergroupID", "UsergroupName", selectedUsergroupIDs) }); 
    } 


    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UserEdit([Bind(Include = "UserID,Username,Firstname,Surname,Email,Password")]User userobj, int[] UsergroupID, int[] selUsergroups) 
    { 

     ModelState.AddModelError("asdfasfd", "asfdasdfsfd"); 

     if (ModelState.IsValid) 
     { 
      try 
      { 
       _us.SaveUser(userobj); 

       if (UsergroupID != null) 
        _us.SaveUserUsergroups(userobj.UserID, UsergroupID); 

       return RedirectToAction("UserDetail", new { userID = userobj.UserID }); 

      } 
      catch 
      { 
       ModelState.AddModelError("SomeError", "errrrrrrrrror"); 
      } 

     } 

     return View("UserEdit", new UserAdminEditViewModel { User = userobj }); 
    } 

我的模式是這樣的:

public class UserAdminEditViewModel 
{ 
    public User User { get; set; } 
    public IEnumerable<Usergroup> Usergroups { get; set; } 
    public PaginatedList<User> Users { get; set; } 
    public MultiSelectList selUsergroups { get; set; } 

    public UserAdminEditViewModel() {} 
} 

我一直在努力與「IEnumerable用戶組」和「公共MultiSelectList selUsergroups {get; set;}」,但它仍然抱怨沒有數據w ith關鍵性評論有IEnumerable

需要做什麼?我寧願使用一些強類型的方式。

在此先感謝

/M

回答

0

您可能會發現一些使用What is ModelState.IsValid valid for in ASP.NET MVC in NerdDinner?

同樣的這個環節,我認爲,如果你要回你會想在同一個頁面再次用數據填充模型。

作爲一種替代方案,您是否考慮過jQuery發佈,以便您不必再次填充模型?

+0

是的,我一直在尋找這幾個星期了,並且無法讓我的工作 – 2009-09-11 06:46:30