2013-04-30 15 views
9

In MVC3 ho questo codice sul mio controller. Si recupera un elenco di ID \ nomi da tavolo di installazione e crea un ViewBagImpostazione di un valore selezionato predefinito in DropDownList in MVC3

var vs = dba.Installation.OrderBy(q => q.InstName).ToList(); 
ViewBag.Vessels = new SelectList(vs, "InstId", "InstName"); 

Ora, a mio modo di vedere. Voglio rendere l'elenco in un elenco a discesa. Ho usato l'helper HTML che funziona bene ...

@Html.DropDownList("InstId",(SelectList)ViewBag.Vessels, "- Select one -") 

ho bisogno di impostare prima voce della lista ViewBag come un valore predefinito selezionato, invece di "- Selezionare uno -" testo.

Come posso farlo?

Grazie in anticipo!

risposta

19

C'è un sovraccarico per il costruttore SelectList che richiede 4 argomenti. L'ultimo dei quali è l'oggetto selezionato predefinito. Per esempio:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", selectedValue); 

Dove selectedValue è un oggetto di qualsiasi tipo è nella vostra lista.

+0

Grazie @WheretheresaWill. OH MIO DIO! Non mi rendevo conto di questo sovraccarico. Che stupido. – equisde

+0

Nessun problema! – WheretheresaWill

+0

grazie, mi ha aiutato .... – shanish

0

È possibile anche creare una classe di supporto per DropDownList Avrà un metodo per impostare il testo come dal testo predefinito per ogni dropdownlist in te soluzione

+0

Grazie @ K2_Ketu ma come WheretheresaWill ha detto, c'è un sovraccarico che include questa opzione. – equisde

4

ho bisogno di impostare prima voce del ViewBag List come un valore predefinito selezionato , anziché "- Seleziona uno -" testo.

quindi è necessario selezionare il primo elemento nella lista (vs) e ottenere è id e usarlo come l'selecedValue nella SelectList:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", 
    vs.FirstOrDefault().InstId); 
+0

Grazie! Funziona pure – equisde

+0

Prego. –

Problemi correlati