asp.net mvc 3 - mvc - DropDown for Edit()[Razor] Vista, precargado con datos del modelo
html form mvc (2)
Tengo las listas desplegables en mi vista Create () funcionando perfectamente.
Pero en la vista Editar () no puedo obtener los datos que se enviaron durante la creación () para mostrarlos en DropDowns con el valor incluido en Create ()
Solo tengo instalados cuadros de texto en este momento y realmente me gustaría tener los datos representados en un menú desplegable para una fácil selección.
Aquí hay un ejemplo:
Crear () Vista: un menú desplegable es para EmployeeTypes y tiendas seleccionadas para EmployeeTypeId
Ahora, ¿cómo hago para que aparezca en la vista Editar () como el mismo menú desplegable, pero con el valor del ID del empleado ya seleccionado?
Tengo un EmployeeViewModel para la vista Create ()
Pero solo estoy pasando el modelo directamente a la vista Editar ()
¿Debo crear algún tipo de "clase parcial" de empleado para la vista Editar ()? manejar las listas de IEnumerable?
y establecer:
var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
{
Value = et.EmployeeTypeId.ToString(),
Text = et.Type.ToString()
});
¿O debería pasarlos como ViewData?
Si es así, ¿cómo hacer para pasar una lista como ViewData y hacer que se muestre como @ Html.DropDownList con el valor pasado del @Model como el valor actual?
Puede haber errores en este código, no lo he probado, pero lo que básicamente quieres hacer es:
var etId = ??? // EmployeeTypeId from your model
var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
{
Value = et.EmployeeTypeId.ToString(),
Text = et.Type.ToString(),
Selected = et.EmployeeTypeId == etId
});
ViewData["EmployeeTypeList"] = employeeTypes.ToList();
Entonces en tu opinión puedes hacer
@Html.DropDownList("EmployeeType", ViewData["EmployeeTypeList"])
Terminé implícito de esta manera, y funcionó como un sueño.
Código de controlador:
SelectList typelist = new SelectList(context.CompanyType.ToList(), "CompanyTypeId", "Type", context.CompanyType);
ViewData["CompanyTypes"] = typelist;
Ver código:
@Html.DropDownList("CompanyTypeId", (IEnumerable<SelectListItem>) ViewData["CompanyTypes"])