2013-05-17 12 views
9

ho trovato molte domande e risposte relative a questo problema, ma niente ha funzionato per mevalore selezionato non funziona per SelectList

sto creando un elenco a discesa come questo

@Html.DropDownListFor(m => m.SchoolYears, new SelectList(Model.SchoolYears, "YearId", "StartDates", Model.CurrentYearId), new { @class = "field_Dropdown", style = "width:100px;",onchange="return searchStudents();" }) 

(Model.CurrentYearId è di tipo int)

Ma non lascia mai selezionato l'anno corrente.

da questo post, ho ottenuto che dovremmo usare stringa per valore selezionato (anche se non so perché, perché consente oggetto per il valore selezionato)

DropDownList SelectList SelectedValue issue

così ho provato tutte queste variazioni

new SelectList(Model.SchoolYears, "YearId", "StartDates", Model.CurrentYearId.ToString()) 

new SelectList(Model.SchoolYears, "YearId", "StartDates", 2) 

new SelectList(Model.SchoolYears, "YearId", "StartDates", "2") 

Ma non hanno funzionato.

C'è un modo per creare l'elenco di selezione tramite la query linq o il ciclo foreach e contrassegnare la proprietà selezionata di ciascun articolo ma perché quanto sopra non funziona?

risposta

21

Trovato il problema.

L'errore che stavo facendo è usare questo

m => m.SchoolYears // m.SchoolYears in a list of string 

Quando ho cambiato in questo

m => m.SelectedYearId // m.SelectedYearId is an integer property 

ha funzionato come un fascino, così alla fine ho questo lavoro

Grazie!

+4

la cosa non funziona per me sforza qualche motivo .. –

+0

Cosa devo fare se ho bisogno di un ID stringa? – Zapnologica

+1

Sto usando MVC5 ma ho ancora lo stesso problema –

0

La soluzione non ha funzionato per me. Risulta che la proprietà selezionata non funziona se il nome della proprietà ViewBag e il nome della proprietà del modello sono gli stessi, quindi dopo aver modificato il nome della proprietà ViewBag ha funzionato.