c# - dropdownlistfor selected value
MVC DropDownList valor seleccionado no funciona (2)
Estoy usando MVC 5.
Tengo mi ViewBag para la lista como
ViewBag.TitleList = new SelectList((new string[] { "Mr", "Miss", "Ms", "Mrs" }), contact.Title);
//contact.Title has selected value.
luego intenté convertir la matriz a SelectListItem ( to no avail)
En la vista se ve como
@Html.DropDownListFor(model => model.Title, ViewBag.TitleList as SelectList, "Select")
también lo intenté
@Html.DropDownList("Title", ViewBag.TitleList as SelectList, "Select")
La lista se carga correctamente pero el Selected Value is Not selected
. ¿Cómo arreglar este problema?
Actualización El culpable era ViewBag.Title que concuerda con mi modelo. Título. Cambié el nombre de mi propiedad modelo a otra cosa y funcionó. Arrgh!
Establecer el valor de la propiedad Title
en el controlador:
ViewBag.TitleList = new SelectList(new string[] { "Mr", "Miss", "Ms", "Mrs" });
viewModel.Title = "Miss"; // Miss will be selected by default
Otra posible razón (y la correcta, basada en los comentarios a continuación) es que ViewData["Title"]
se reemplaza por otro valor. Cambie el nombre de la propiedad del Title
por otro y todo debería funcionar.
Cuando no se especifica un valor (es decir, "Id"), DropDownListFor a veces no se comporta correctamente. Prueba esto:
public class FooModel
{
public int Id { get; set; }
public string Text { get; set; }
}
var temp = new FooModel[]
{
new FooModel {Id = 1, Text = "Mr"}, new FooModel {Id = 2, Text = "Miss"},
new FooModel {Id = 3, Text = "Ms"}, new FooModel {Id = 4, Text = "Mrs"}
};
ViewBag.TitleList = new SelectList(temp, "Id", "Text", 2);
EDITAR: otra solución
var temp = new []
{
new SelectListItem {Value = "Mr", Text = "Mr"}, new SelectListItem {Value = "Miss", Text = "Miss"},
new SelectListItem {Value = "Ms", Text = "Ms"}, new SelectListItem {Value = "Mrs", Text = "Mrs"}
};
ViewBag.TitleList = new SelectList(temp, "Value", "Text", "Miss");