Tengo una enumeración para una de las propiedades de mi modelo de vista. Quiero mostrar una lista desplegable que contiene todos los valores de la enumeración. Puedo hacer que esto funcione con el siguiente código.¿Cómo lleno una lista desplegable con valores enum?
Lo que me pregunto es si hay una manera simple de convertir de una enumeración a un Enumerable? Puedo hacerlo manualmente como en el siguiente ejemplo, pero cuando agrego un nuevo valor enum, el código se rompe. Me imagino que puedo hacerlo a través de la reflexión según esta example, pero ¿hay otras formas de hacerlo?
public enum Currencies
{
CAD, USD, EUR
}
public ViewModel
{
[Required]
public Currencies SelectedCurrency {get; set;}
public SelectList Currencies
{
List<Currencies> c = new List<Currencies>();
c.Add(Currencies.CAD);
c.Add(Currencies.USD);
c.Add(Currencies.EUR);
return new SelectList(c);
}
}
¡Gran solución! –
Gran solución de hecho. Sin embargo, si la entrada en enum no tiene atributo de descripción, falla. Reemplace '.First()' con '.FirstOrDefault()' y en lugar de 'items.Add (value, attrs.GetName());' tenga 'items.Add (value, attrs! = Null? Attrs.GetName (): value.ToString()); 'Eso te ahorra escribir en Descripción para las entradas obvias de Enum. – trailmax
hecho, gracias por las correcciones. –