valor textboxfor son seleccionar seleccionado que obtener net mvc los htmlhelper examples español dropdownlist como asp asp.net-mvc asp.net-mvc-5 html-helper

asp.net mvc - textboxfor - MVC5-Cómo configurar "selectedValue" en DropDownListFor Html helper



que son los html helpers en asp.net mvc (3)

Asegúrese de que su Valor de selección de retorno sea una Cadena y no e int cuando lo declare en su modelo.

Ejemplo:

public class MyModel { public string TipPopustaId { get; set; } }

Como dice la pregunta: ¿Cómo configurar selectedValue en DropDownListFor Html helper?

Intenté la mayoría de las otras soluciones, pero ninguna funcionó, por eso estoy abriendo una nueva pregunta.

Nada de esto ayudó:

@Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", 2), htmlAttributes: new { @class = "form-control" }) //Not working with or without cast @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", (ProjectName.Models.TipDepozita)Model.TipoviDepozita.Single(x => x.Id == 2)), htmlAttributes: new { @class = "form-control" }) @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", (ProjectName.Models.TipDepozita)Model.TipoviDepozita.Where(x => x.Id == 2).FirstOrDefault()), htmlAttributes: new { @class = "form-control" }) @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", new SelectListItem() { Value="2", Selected=true}), htmlAttributes: new { @class = "form-control" })

Me gustaría evitar la creación manual de SelectListItems o ViewModel solo para la lista si es posible.


Cuando utiliza el método DropDownListFor() (o DropDownList() ) para enlazar a una propiedad de modelo, es el valor de la propiedad que establece la opción seleccionada.

Internamente, los métodos generan su propio IEnumerable<SelectListItem> y establecen la propiedad Selected función del valor de la propiedad y, por lo tanto, se ignora la configuración de la propiedad Selected . El único momento en que se respeta es cuando no se vincula a una propiedad modelo, por ejemplo, utilizando

@Html.DropDownList("NotAModelProperty", new SelectList(Model.TipoviDepozita, "Id", "Naziv", 2))

Tenga en cuenta que puede inspeccionar el código fuente , en particular los SelectInternal() y GetSelectListWithDefaultValue() para ver cómo funciona en detalle.

Para mostrar la opción seleccionada cuando la vista se procesa por primera vez, establezca el valor de la propiedad en el método GET antes de pasar el modelo a la vista

También recomiendo que su modelo de vista contenga una propiedad IEnumerable<SelectListItem> TipoviDepozita y que genere la SelectList en el controlador

var model = new YourModel() { TipoviDepozita = new SelectList(yourCollection, "Id", "Naziv"), TipPopustaId = 2 // set the selected option } return View(model);

entonces la vista se convierte

@Html.DropDownListFor(m => m.TipPopustaId, Model.TipoviDepozita, new { @class = "form-control" })


public static class EnumHelper { public static SelectList EnumToSelectList<TEnum>(this Type enumType, object selectedValue) { return new SelectList(Enum.GetValues(enumType).Cast<TEnum>().ToList().ToDictionary(n=> n), "Key", "Value", selectedValue); } }

Y en tu vista:

@Html.DropDownListFor(model => model.Role, EnumHelper.EnumToSelectList<Role>(typeof(Role), Model.Role), new { htmlAttributes = new { @class = "padding_right" } }) @Html.ValidationMessageFor(model => model.Role, "", new { @class = "text-danger" })

En lugar de EnumToList, use cualquier otra lista y seleccione la clave y el valor de las propiedades de su tipo de lista