mvc dropdownlist drop down c# asp.net-mvc asp.net-mvc-4 razor selectedvalue

c# - selectedvalue dropdownlist mvc



Html.DropDownList El valor seleccionado no funciona(usando el constructor con IEnumberable<SelectListItem> (7)

Tengo un problema donde el valor seleccionado no funciona para el método auxiliar Html.DropDownList. Vea abajo:

Este es mi controlador:

public ActionResult Edit(int id = 0) { NewsEvent item = GetItem(id); ViewBag.NewsItemId = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId); return View(item); }

Esta es mi opinión:

@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty, new { @class = "form-control" })

Sin embargo, cuando intento lo siguiente en la vista funciona:

@Html.DropDownList("NewsItemId", string.Empty)

La siguiente información también funciona pero como el nombre del campo no coincide con el modelo, no se publicará correctamente.

@Html.DropDownList("NewsItemIdDrop",ViewBag.NewsItemId as SelectList, string.Empty, new { @class = "form-control" })

La razón por la que necesito usar la primera opción es para poder agregar el atributo de clase al control.

¿Podría alguien ayudarme a entender lo que estoy haciendo mal?


Debe cambiar el nombre del campo de su DropDownList:

@Html.DropDownList("Some_Name_that_does_not_exist_in_model", ViewBag.NewsItemId as SelectList, string.Empty, new { @class = "form-control" })


En primer lugar, ¿cómo se rellena ViewBag.NewsItemId.Items ? No vemos de dónde vienen los valores.

Para que un valor seleccionado funcione, debe ser del mismo tipo que los elementos de sus colecciones. Si item.NewsItemId es de tipo T , ViewBag.NewsItemId.Items debe ser de tipo IEnumerable<T> (o cualquier otro tipo de colección que lo implemente). No parece ser el caso, porque establece NewsItemId como el valor seleccionado, mientras que su colección se basa en NewsItemId.Items que pueden no ser del mismo tipo.


No me gustó el hecho de que puedas usar

@Html.DropDownList("NewsItemID")

y funciona. Entonces necesitas agregar el atributo ''clase'' y de repente se rompe. Vi un lugar trabajando y otro no trabajando usando la sintaxis

@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty, new { @class = "form-control" })

Cuando investigué esto, determiné que ViewBag.NewsItemId era en realidad un nulo en la vista. Así que una sintaxis de trabajo, con los campos Modelo y ViewBag que tienen el mismo nombre es

@Html.DropDownList("NewsItemId", null, string.Empty, new { @class = "form-control" })


Probé muchas cosas pero eventualmente lo puse funcionando así

En el controlador

int valittu_tila = 1; var tapahtumantilat = new List<SelectListItem>(); tapahtumantilat.Add(new SelectListItem { Text = "Tapahtumaa kirjataan", Value = "0" }); tapahtumantilat.Add(new SelectListItem { Text = "Odottaa jonossa", Value = "1"}); tapahtumantilat.Add(new SelectListItem { Text = "Tapahtumaa käsitellään", Value = "2"}); ViewBag.tilalista = new SelectList(tapahtumantilat, "Value", "Text", valittu_tila);

Y luego, a la vista, acabo de poner (también tengo el evento onchange y la clase para el menú desplegable aquí, pero puede eliminarlos si lo desea).

@Html.DropDownList("tuki_tila", ViewBag.tilalista as SelectList, "-- valitse tila --", new { @onchange = "executeticketsearch();", @class = "haku_dropdowns" })

(Lo siento por finlandés en los valores de texto y nombres de variables, pero esos no deberían importar: D)


Tienes el mismo problema aquí:

DropDownListFor no seleccionando valor

El problema está en su nombre de propiedad ViewBag. Debido a que es igual a su propiedad en el Modelo, no funcionará. Solo debes cambiar el nombre de tu accesorio de ViewBag a otra cosa, como:

ViewBag.NewsItemList = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);

y en vista

@Html.DropDownList("NewsItemId",ViewBag.NewsItemList as SelectList, string.Empty, new { @class = "form-control" })


cambie el nombre de la propiedad de viewbag a otro nombre de variable de modelo utilizado en la página


@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty, new { @class = "form-control" })

cambiar a

@Html.DropDownList("NewsItemId", ViewBag.NewsItemIdList as SelectList, string.Empty, new { @class = "form-control" })

ViewBag.NewsItemIdList nombre de ViewBag.NewsItemIdList cambió. También cambio en el controlador.