2016-01-29 4 views
9

sto usando qui di seguito il codice per creare un menu a discesaMVC 5 SelectList da tavolo con valore di bianco per DropDownList

controller

ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name") 

View

@Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" }) 

La mia domanda è Come posso modificare SelectList per aggiungere un elemento vuoto in modo che vi sia un elemento vuoto aut omaticamente aggiunto per DropDownList.

Grazie.

risposta

14

utilizzare uno dei overloads che accetta un optionLabel

@Html.DropDownListFor(m => m.ID, (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" }) 

o se non si desidera utilizzare i metodi fortemente tipizzati

@Html.DropDownList("ID", (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" }) 

che andrà ad aggiungersi la prima opzione con il testo specificato in il 3 ° parametro e con un valore null

<option value="">Please Select</option> 
+0

Grazie per la risposta. Quindi non posso modificare SelectList per ottenere il risultato desiderato? – ary

+0

No, ma perché vorresti? Puoi sempre creare il tuo 'IEnumerable ' e aggiungere inserire il primo con 'Text =" ... "' e 'Value =" "' ma questo non ha senso –

+0

Perché voglio decidere in controller per avere un valore vuoto di no Ci sarà un caso in cui non ci sarà alcun valore vuoto. – ary

1

È possibile utilizzare questo sovraccarico:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes); 

dove optionLabel è il testo di un elemento vuoto di default.

+0

Può fare un esempio, per favore. Inoltre voglio aggiungere il valore vuoto "" con id dice -1 a SelectList. Grazie. – ary

+2

Ad esempio: '@ Html.DropDownList (" Id ", null, htmlAttributes: new {@class =" form-control ", optionLabel:" [non selezionato] "})' Se il testo "[non selezionato]" è selezionato allora otterrai _null_ come valore. – romanoza

+0

Viene visualizzato l'errore "Il miglior sovraccarico di" DropDownList "non ha un parametro denominato optionLabel" – ary

0

Nel mio progetto funziona quelle stringhe

controller

ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name") 

View

@Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })