Désolé si cela est un dup, ma recherche n'a rien trouvé.Élément sélectionné dans les listes déroulantes à partir de Enum dans ASP.net MVC
J'utilise la méthode suivante pour générer des listes déroulantes pour les types de ENUM (Tiré de ici: http://addinit.com/?q=node/54):
public static string DropDownList(this HtmlHelper helper, string name, Type type, object selected)
{
if (!type.IsEnum)
throw new ArgumentException("Type is not an enum.");
if(selected != null && selected.GetType() != type)
throw new ArgumentException("Selected object is not " + type.ToString());
var enums = new List<SelectListItem>();
foreach (int value in Enum.GetValues(type))
{
var item = new SelectListItem();
item.Value = value.ToString();
item.Text = Enum.GetName(type, value);
if(selected != null)
item.Selected = (int)selected == value;
enums.Add(item);
}
return System.Web.Mvc.Html.SelectExtensions.DropDownList(helper, name, enums, "--Select--");
}
Il fonctionne bien, sauf pour une chose. Si je donne à la liste déroulante le même nom que la propriété sur mon modèle, la valeur sélectionnée n'est pas définie correctement. Signification cela fonctionne:
<%= Html.DropDownList("fam", typeof(EnumFamily), Model.Family)%>
Mais cela ne:
<%= Html.DropDownList("family", typeof(EnumFamily), Model.Family)%>
Parce que je suis en train de transmettre un objet entier directement à la méthode du contrôleur je signale, je voudrais vraiment comme pour que la liste déroulante soit nommée pour la propriété sur le modèle. Lorsque vous utilisez le "bon" nom, la liste déroulante affiche correctement, je n'arrive tout simplement pas à définir la valeur sélectionnée.
Je ne pense pas que cette question est importante mais je suis en cours d'exécution sur MVC 1 mono 2.6
modifier: Je viens de tester cela sur les fenêtres, et je vois le même comportement
J'ai vu le même comportement et j'ai travaillé en utilisant une liste déroulante différente. – Nate