2011-03-20 27 views
5

En mi modelo, tengo una lista del país: Model.ListCountry. La clase País tiene algunos campos: Id, código, ValueFR, ValueUSDropDownListFor ... valor seleccionado

en mi modelo, tengo un cliente y este cliente tiene un país: Model.Customer.Country

He intentado esto:

@Html.DropDownListFor(x => x.Record.Customer.Country, new SelectList(Model.ListCountry, "Code", "FR"), new { id = "lbCountry" }) 

Ni idea ?

Gracias,

Update1: En la base de datos, que guardar el ID, pero en el menú desplegable como "valor de opción" que utilizan el código, y como pantalla fiels ValueFR o ValueUS dependiendo del usuario de la lengua

Respuesta

16

con el fin de preseleccionar un valor en una lista desplegable establezca la propiedad correspondiente a este valor en su acción de controlador:

model.Record.Customer.Country = "FR"; 

en cuanto a la generación de la lista desplegable que respecta a los dos argumentos cadena que está pas cantar al SelectList constructor representan los nombres de propiedad del modelo correspondiente respectivamente al Valor y al Texto. Así que supongo que debe ser de la misma familia:

@Html.DropDownListFor(
    x => x.Record.Customer.Country, 
    new SelectList(Model.ListCountry, "Code", "ValueFR"), 
    new { id = "lbCountry" } 
) 

En este ejemplo estamos utilizando la propiedad Code como valores en la lista desplegable y ValueFR propiedad como texto. Por lo tanto, en este caso debe asegurarse de que está configurando la propiedad model.Record.Customer.Country en algún Code que exista en la lista y el menú desplegable preseleccionará automáticamente este elemento.

Otra posibilidad utilice el siguiente SelectList constructor que le permite especificar un valor seleccionado como 4 º parámetro:

@Html.DropDownListFor(
    x => x.Record.Customer.Country, 
    new SelectList(Model.ListCountry, "Code", "ValueFR", "FR"), 
    new { id = "lbCountry" } 
) 
+0

Véase el Update1 en mi post –

+0

@ Kris-I, si el uso de '' como Id' option value' y desea preseleccionar un elemento use 'CountryId' como primer argumento de DropDownListFor helper y en su acción de controlador establezca el valor de esta propiedad en el id. de país correspondiente que desea preseleccionar. También tenga en cuenta que tener dos propiedades 'ValueFR' y' ValueUS' para manejar la localización es una mala práctica. Debería tener una sola propiedad y, en función de la configuración de idioma actual, su depósito rellenaría la propiedad con el valor correcto. ¿Qué pasa si mañana necesitas manejar un tercer idioma? ¿Modificarías todo tu código? –

+0

Sé sobre la mala práctica, es solo temporal. De todos modos ... el valor de la lista desplegable aún no está seleccionado. –

Cuestiones relacionadas