2011-09-07 12 views
17

Ho un sacco di liste drop down a mio avviso, come questa:SelectList con una selezione Null

@Html.DropDownListFor(model => model.Process, Model.ProcessList) 

tutti prendono in un SelectList sulla base di dati da una tabella di database come questo:

ProcessList = new SelectList(_db.Processes, "ID", "Name"); 

dove _db.Processes restituisce un ObjectSet<Process>.

Il problema è che talvolta la proprietà impostata dall'elenco a discesa non può essere selezionata, ad esempio null. Come posso aggiungere una selezione null al SelectList>

risposta

25
@Html.DropDownListFor(model => model.Process, Model.ProcessList,"--Select Process--") 

La linea di cui sopra aggiungerebbe --select process-- in cima alla lista di selezione e se si seleziona questo valore, stringa vuota verrà pubblicato e proprietà vincolata verrà impostata su null (Processo in questo caso)

+0

Ho trovato un problema con questo. Quando si fornisce il parametro 'optionLabel' il menu a discesa non seleziona più l'elemento corrente in base al parametro SelectList 'selectedValue'. Seleziona sempre l'opzione predefinita durante la modifica. Eventuali suggerimenti? –

+0

ciò che stai dicendo dovrebbe accadere solo quando la proprietà rilevante del modello non contiene alcun valore. Ad esempio, se il valore di 'model.Process' è nullo o qualcosa che non è presente nell'elenco, selezionerà l'etichetta per impostazione predefinita. –

+3

Ho scoperto che non appena aggiungo una voce nulla alla lista (tramite il modello, o tramite l'opzione etichetta) selezionerà solo il primo elemento per impostazione predefinita. Sono passato all'utilizzo di un DropDownList KendoUI e il problema è andato via, quindi presumo possa trattarsi di un bug con DropDownList standard (o la mia configurazione di progetto). Il menu a discesa di KendoUI richiede un valore non nullo (ad es. 0) in tutte le voci, quindi non è una soluzione perfetta. –

Problemi correlati