J'ai une page Web asp.net-mvc et je veux montrer une liste déroulante qui est basée sur une énumération. Je souhaite afficher le texte de chaque élément enum et l'identifiant étant la valeur int associée à l'énumération. Y a-t-il une manière élégante de faire cette conversion?Comment convertir une énumération en liste <SelectListItem>?
Répondre
Vous pouvez utiliser LINQ:
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(v => new SelectListItem {
Text = v.ToString(),
Value = ((int)v).ToString()
}).ToList();
Bien que * LINQ * soit devenu le nom officieux des Extensions Enumerable, je ne peux m'empêcher de me demander si quelque chose de plus approprié existe. – ChaosPandion
Cela fait partie de l'espace de noms et du projet Linq, et IMO est le nom correct. Linq est juste aussi le nom de l'extension de la langue. – Dykam
ce code ci-dessus ne compile pas. j'essaye de faire ceci: Liste
Maintenant, j'utilisé Tuple<string, string>
mais vous pouvez convertir cette option pour utiliser quoi que ce soit:
var values = Enum.GetValues(typeof(DayOfWeek))
.Cast<DayOfWeek>()
.Select(d => Tuple.Create(((int)d).ToString(), d.ToString()))
.ToList()
Vous pouvez utiliser Enum.GetNames()
pour obtenir un tableau de chaînes contenant les noms des éléments de ENUM. Si les noms de vos éléments sont conviviaux, c'est probablement assez bon. Sinon, vous pouvez créer votre propre méthode GetName()
qui retournera un joli nom pour chaque élément. OU - si l'énumération ne changera jamais (ou rarement), vous pouvez simplement créer une méthode qui ajoute directement des éléments codés en dur dans votre liste déroulante. C'est probablement plus efficace (si c'est important pour vous).
Depuis MVC 5.1, la façon la plus élégante serait d'utiliser EnumDropDownListFor méthode d'aide Html si vous avez besoin pour remplir select
options dans votre vue:
@Html.EnumDropDownListFor(m => m.MyEnumProperty,new { @class="form-control"})
ou GetSelectList méthode de EnumHelper dans votre contrôleur:
var enumList = EnumHelper.GetSelectList(typeof (MyEnum));
gentil, merci! –
Très lisse! Je ne savais pas à ce sujet ... devrait être la bonne réponse. –
wow, je ne savais pas. beaucoup de lignes de code enregistrées pour le moment! Merci mec! –
Je l'ai fait en utilisant une méthode statique que je pourrais réutiliser.
public static IEnumerable<SelectListItem> EnumToSelectList<T>()
{
return (Enum.GetValues(typeof(T)).Cast<T>().Select(
e => new SelectListItem() { Text = e.ToString(), Value = e.ToString() })).ToList();
}
J'utilisé GetEnumSelectList
de la classe Html Aide
<select asp-for="MyProperty" class="form-control" asp-items="@Html.GetEnumSelectList<MyEnum>()" ></select>
- 1. Comment convertir Liste <Company> Liste <ICompany>
- 2. Convertir Char [] en une liste <byte> (C#)
- 3. Comment lier une énumération à ma liste?
- 4. comment convertir DataTable Liste <String> en C#
- 5. en utilisant LINQ en C# pour convertir une liste <string> en Liste <char>
- 6. DataTable liste Convertir <T>
- 7. Convertir les nombres en énumération de chaînes dans bash
- 8. Comment convertir/convertir une liste d'objets en file d'attente d'objets
- 9. Le moyen le plus rapide de convertir la liste <?> en Liste <ObjectType>
- 10. Convertir le type d'objet en liste <T>
- 11. comment bien convertir d'un IEnumerable <T> à une liste <T>?
- 12. Comment puis-je convertir la liste <string> à la liste <myEnumType>?
- 13. Comment faire pour convertir un EntityCollection <T> en Liste <POCOObj>
- 14. Convertir la liste <Cookie> à CookieCollection en C#
- 15. Comment faire pour convertir une liste typée anonymement à la liste <T>?
- 16. Convertir une liste <int> en une chaîne jointe d'ints?
- 17. Comment convertir SQLDataReader à la liste <>
- 18. Comment traduire une énumération Java en C#?
- 19. F # convertir Array2 en une liste
- 20. convertir la liste <int> à la liste <long>
- 21. Python, Sqlite3 - Comment convertir une liste en une cellule BLOB
- 22. Comment convertir une chaîne XML en une liste de dictionnaires?
- 23. comment convertir une liste en chaîne en tcl
- 24. Convertir une liste Python en colonne CSV
- 25. Énumération de liste dans SQL?
- 26. convertir ou diffuser une liste <t> à EntityCollection <T>
- 27. Comment convertir une liste avec des liens graphiques en une liste en ligne?
- 28. liste Convertir en tableau
- 29. Comment mélanger une liste <T>
- 30. Comment transformer une liste <T> en un DataSet?
la réponse par Maksim Vi. devrait vraiment être la bonne réponse. –