2012-11-15 10 views
19

ho un .I vista rasoio ha linea come bleowRazor conversione enum a int all'interno di una vista

<option value='@{(Int16)PhoneType.Work}'>@PhoneType.Work</option> 

Questa è un'opzione in un elenco di selezione/dropdownlist In questo ho un PHONETYPE enum. Per il testo depositato @ PhoneType.Work funziona bene ma per campo di valore @ {(Int16) PhoneType.Work non funziona

Che cosa posso fare per ottenere il valore intero della enum al campo del valore

+0

Perché non si utilizza l'helper 'Html.DropDownListFor'? –

+0

come utilizzarlo per enum –

+0

Scrivendo un helper: http://stackoverflow.com/a/5961529/29407 –

risposta

2

Perché non avere un altro campo sul vostro ViewModel che è un numero intero

public WorkId {get {return (int)Work; } 

e utilizzare questo in vista

<option value='@PhoneType.WorkId'>@PhoneType.Work</option> 
44

questo sy ntax dovrebbe fare il trucco (notare che il() al posto di {}):

<option value='@((Int16) PhoneType.Work)'>@PhoneType.Work</option> 
1

possiamo usare la funzione ChangeType come di seguito. Spero che questo aiuti per qualcuno in futuro.

<option [email protected](PhoneType.Work, PhoneType.Work.GetTypeCode())>@PhoneType.Work</option> 

o

<option [email protected](PhoneType.Work, typeof(int))>@PhoneType.Work</option>