Ho un enum per una delle proprietà del mio modello di visualizzazione. Voglio visualizzare un elenco a discesa che contiene tutti i valori dell'enumerazione. Posso farlo funzionare con il seguente codice.Come si popola un elenco a discesa con valori enum?
Quello che mi chiedo è se esiste un modo semplice per convertire da un enum a un oggetto IEnumerable? Posso farlo manualmente come nel seguente esempio, ma quando aggiungo un nuovo valore enum il codice si rompe. Immagino di poterlo fare tramite la riflessione come da questo example, ma ci sono altri modi per farlo?
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);
}
}
Ottima soluzione! –
Ottima soluzione in effetti. Tuttavia, se la voce in enum non ha attributo description, fallisce. Quindi sostituisci '.First()' con '.FirstOrDefault()' e invece di 'items.Add (value, attrs.GetName());' have 'items.Add (value, attrs! = Null? Attrs.GetName (): value.ToString()); 'Questo ti fa risparmiare la digitazione in Description per ovvi voci Enum. – trailmax
fatto, grazie per le correzioni. –