J'essaie de comprendre comment fonctionne ce DropDownListFor mais sans succès.
Mon contrôleur crée une liste de SelectListItems où je mets tous les groupes présents dans la base de données:ASP.NET MVC2: DropDownListFor ne fonctionne pas correctement avec plusieurs sélection + modelbinder
viewModel.Groups = LoadGroups(viewModel.User.AssociatedGroups);
ceci il la méthode:
private IList<SelectListItem> LoadGroups(List<String> associatedGroups)
{
var groups = _SecurityService
.LoadGroups()
.Select(e => new SelectListItem
{
Selected = associatedGroups.Contains<System.String>(e.Id.ToString()),
Value = e.Id.ToString(),
Text = e.Name
}).ToList();
return (groups);
}
Comme vous pouvez le voir, je mets l'élément sélectionné s'il sont des groupes associés dans la liste. Je mets cette liste dans un champ (groupes) de mon viewmodel personnalisé:
public class UsersViewModel
{
public UsersViewModel()
{
this.Groups = new List<SelectListItem>();
}
public Models.User User { get; set; }
public IList<SelectListItem> Groups { get; set; }
}
et envoyer UsersViewModel à la vue. J'utilise ce code pour construire un menu déroulant avec plusieurs choix:
<%=Html.DropDownListFor(m => m.User.AssociatedGroups, (List<System.Web.Mvc.SelectListItem>)Model.Groups, new { @class = "dropDownGroups", multiple = "multiple" })%>
AssociatedGroups est un champ Utilisateurs de classe (ce qui est un membre de mon viewmodel):
public List<String> AssociatedGroups { get; set; }
Il y a rien de particulier ici. Si j'utilise ce code, je ne peux pas voir les éléments de la liste déroulante sélectionnés (et ils ont l'ensemble d'attributs, j'ai vérifié), mais je peux lier les sélections avec AssociatedGroups lorsque je publie le formulaire. Si je change AssociatedGroups (champ de la classe utilisateur) avec une chaîne:
public String AssociatedGroups { get; set; }
J'ai le comportement opposé:
je peux voir les éléments du menu déroulant contrôlés mais quand je posterai la forme il n'y a pas liant, ou mieux, un seul élément est lié. J'ai passé la plus grande partie de ma journée à essayer de comprendre le problème et j'ai essayé différentes combinaisons, mais aucune d'entre elles ne semble fonctionner. Y a-t-il quelqu'un qui peut essayer de m'aider?
Merci.
Merci Darin, C'était utile même si j'ai seulement changé DropDownListFor dans SelectList. J'ai gardé tout le reste comme je l'ai collé et ça marche très bien. Merci. – LeftyX
@vandalo, si cela vous a été utile, vous pourriez peut-être marquer la réponse comme acceptée? –
Désolé Darin, j'ai oublié! – LeftyX