2010-05-16 14 views
5

Ho il seguente dropdownlist in MVCMVC: Come dichiaro il valore del nome utilizzando DropDownListFor

<%= Html.DropDownListFor(c => c.Address.Id, new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), "-- New Address --", new { @name = "[" + orderItemAddressCount + "].AddressId" })%> 

Sto cercando di sovrascrivere il valore del nome sul dropdownlist.

questo è il markup ottengo

<select id="Address_Id" name="Address.Id"><option value="">-- New Address --</option> 

Questo è il markup voglio

<select id="Address_Id" name="[0].AddressId"><option value="">-- New Address --</option> 

Come dichiaro il valore del nome utilizzando DropDownListFor?

risposta

10

Non è possibile sovrascrivere il nome generato dal metodo DropDownListFor. È fortemente digitato e il nome è basato sul lambda che stai passando come argomento. Se si desidera ignorare il nome del generato selezionare il modo desiderato si dovrà o scrivere il proprio metodo di estensione o utilizzare il non fortemente tipizzato DropDownList metodo:

<%= Html.DropDownList(
    "[0].AddressId", 
    new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), 
    "-- New Address --") 
%> 

Ma perché si vuole fare questo Comunque? Non stai vincolando allo stesso ViewModel quando invii il modulo?

+0

grazie mille, tutto ordinato ho usato HTML.DropDownList. Ero impegnato in una raccolta di indirizzi, quindi avevo bisogno di aggiungere l'indice. [0] .AddressId. grazie ancora. – frosty

+0

"perché vorresti farlo comunque?" Abbiamo modelli di editor nidificati all'interno di viste parziali, quindi i nomi predefiniti sono errati (sono relativi alla vista parziale). Potremmo saltare il passaggio della vista parziale, ma poi finiamo per duplicare un sacco di codice in ogni modello di editor (abbiamo diversi template perché la visualizzazione di una porzione di ciascun elemento cambia drasticamente in base alle proprietà). – PeterL

Problemi correlati