Je rencontre des problèmes avec une Listbox, je vais ajouter une validation à une page où vous ajoutez/modifiez un utilisateur, et quand la page se charge et j'ajoute une erreur d'état de modèle pour forcer Pour arrêter, il se plaint de ma liste ne contient pas de données avec une clé.Problèmes de listbox lors de la publication avec le modèle
Sur la page je:
<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>
Et dans mon contrôleur je:
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 });
}
Et mon modèle ressemble à ceci:
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() {}
}
J'ai essayé avec "IEnumerable Usergroups" et "public MultiSelectList selUsergroups {get; set;}", mais il se plaint encore qu'il n'y a pas de données w la clé bla qui a IEnumerable
Que faut-il faire? Je préférerais utiliser un moyen fortement typé.
Merci à l'avance
/M
oui j'ai regardé cela pendant des semaines maintenant, et ne peux pas obtenir le mien pour travailler –