2010-05-16 27 views
5

Tengo el siguiente lista desplegable en mvcMVC: ¿Cómo se declara el valor del nombre mediante DropDownListFor

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

Estoy intentando sobrescribir el valor de nombre en la lista desplegable.

este es el margen de beneficio que consigo

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

Este es el marcado quiero

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

Cómo os anuncio el valor del nombre utilizando DropDownListFor?

Respuesta

10

No puede anular el nombre generado por el método DropDownListFor. Está fuertemente tipado y el nombre se basa en la lambda que está pasando como argumento. Si desea reemplazar el nombre del generada seleccionar la forma que desee, tendrá que o bien escribir su propio método de extensión o utilizar la no inflexible DropDownList método:

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

Pero ¿por qué quieres hacer esto ¿de todas formas? ¿No está vinculando al mismo ViewModel cuando envía el formulario?

+0

Gracias grande, todo ordenado usé HTML.DropDownList. Estaba vinculado a una colección de direcciones, por lo que necesitaba agregar el índice. [0] .AddressId. gracias de nuevo. – frosty

+0

"¿por qué querrías hacer esto de todos modos?" Tenemos plantillas de editor anidadas en vistas parciales, por lo que los nombres predeterminados son incorrectos (son relativos a la vista parcial). Podríamos omitir el paso de vista parcial, pero luego terminaremos duplicando mucho código en cada plantilla de editor (tenemos varias plantillas porque la visualización de una parte de cada elemento cambia drásticamente en función de las propiedades). – PeterL

Cuestiones relacionadas