Sto riscontrando un problema con i menu a discesa e il viewbag. Io sono la creazione di un menu a discesa utilizzando il seguente codice nel mio controller:MVC 3 Dropdown che perde il valore selezionato con ViewBag
applicationGuid = new Guid(form["applicationList"]);
var applications = _applicationRepository.List();
ViewBag.applicationList = new SelectList(applications, "Id", "Name", applicationGuid);
e nella vista, questo funziona perfettamente e restituisce il valore precedentemente selezionato (applicationGuid):
@Html.DropDownList("applicationList", "")
Ora voglio usare il seguente codice come voglio aggiungere alcuni attributi alla discesa:
@Html.DropDownList("applicationList", ViewBag.applicationList as SelectList, "", new { rel = "0", @class = "required" })
ma per qualche ragione, il valore selezionato non viene resa (anche se si passa alla vista e non posso sE e selezionato = "true" rispetto all'elemento corretto nella lista di selezione di ViewBag).
I due esempi sopra il rendering come (questo ha il selezionato = "selezionato"):
<select id="applicationList" name="applicationList"><option value=""></option><option selected="selected" value="2f666645-9b28-406f-bd9f-9ecc009346a6">app1</option><option value="898cbbb5-5dff-4378-b15a-9ecc00b8242f">app2</option></select>
e in questo modo (selezionato è andato !!):
<select class="required" id="applicationList" name="applicationList" rel="0"><option value=""></option><option value="2f666645-9b28-406f-bd9f-9ecc009346a6">app1</option><option value="898cbbb5-5dff-4378-b15a-9ecc00b8242f">app2</option></select>
Qualcuno può spiegare cosa sto facendo di sbagliato qui e perché sta perdendo il valore selezionato? Ho trovato una serie di post che spiegano come i nomi degli elementi di visualizzazione dei dati non possono essere scontrati, ma ho rimosso questo nome con nomi casuali e niente sembra funzionare! È un problema in MVC3?
Grazie per la risposta Carson. Ho già provato questo e non ha funzionato per me. Ho appena provato di nuovo e sempre la stessa uscita. Non sono sicuro di quello che sto facendo in modo diverso da te. – user728848
Dimentica quello .... questo funziona !! Quando ho cambiato il nome ho dimenticato di cambiare un po 'di codice che ha fatto questo: if (form ["applicationListX"]! = "" && form ["applicationListX"]! = Null) applicationGuid = new Guid (form ["applicationListX "]); quindi stavo perdendo il mio valore! Grazie per l'aiuto. – user728848
Grazie mille! Funziona ora in modo impeccabile. Lo dichiarerei un bug ... – dampee