Tengo problemas con DropDownListFor
mi aplicación MVC3. Pude usar StackOverflow para descubrir cómo hacer que aparezcan en la Vista, pero ahora no sé cómo capturar los valores en sus propiedades correspondientes en el Modelo de Vista cuando se envía. Para que esto funcione, tuve que crear una clase interna que tuviera una ID y una propiedad de valor, luego tuve que usar una IEnumerable<Contrib>
para satisfacer los requisitos del DropDownListFor
parámetro. Ahora, sin embargo, ¿cómo se supone que MVC FW mapeará el valor seleccionado en este menú desplegable de nuevo en la propiedad de cadena simple en mi modelo de vista?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
En mi Vista coloco el menú desplegable en la página así:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>
Cuando envío el formulario, el ContribType
es (por supuesto) nulo.
¿Cuál es la forma correcta de hacer esto?
fuente
contribTypeOptions
, por ejemplo,new Contrib {ContribId = -1, Value = "Please Select"}
y se mostrará en la lista desplegable. Que se puede comprobar siContribType
se-1
trata de medios que el usuario no ha seleccionado ningún valor@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value", Model.ContribTypeOptions.First().ContribId), "Select, please")
SelectList
) . Es el valor de la propiedad (ContribType
) lo que determina qué se selecciona (así es como funciona el enlace del modelo) y el código debería ser@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value")
¿Puede editar la respuesta para corregir?Creo que esto ayudará: en el controlador, obtenga los elementos de la lista y el valor seleccionado
y en vista
fuente
Para vincular datos dinámicos en una DropDownList, puede hacer lo siguiente:
Cree ViewBag en el controlador como se muestra a continuación
ahora use este valor en la vista como se muestra a continuación:
fuente
Aquí Valor es ese objeto de modelo donde desea guardar su Valor seleccionado
fuente