asp.net mvc - MVC5-Comment définir «selectedValue» dans l’aide DropDownListFor Html




asp.net-mvc asp.net-mvc-5 (2)

Comme le dit la question: Comment définir selectedValue dans l’aide DropDownListFor Html?

J'ai essayé la plupart des autres solutions mais aucune n'a fonctionné, c'est pourquoi j'ouvre une nouvelle question.

Rien de tout cela n'a aidé:

@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" })

Je voudrais éviter la création manuelle de SelectListItems ou d'un ViewModel juste pour la liste si possible.


Assurez-vous que votre valeur de sélection renvoyée est une chaîne et non pas int lorsque vous la déclarez dans votre modèle.

Exemple:

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

Lorsque vous utilisez la méthode DropDownListFor() (ou DropDownList() ) pour se lier à une propriété de modèle, sa valeur de la propriété qui définit l'option sélectionnée.

En interne, les méthodes génèrent leur propre IEnumerable<SelectListItem> et définissent la propriété Selected fonction de la valeur de la propriété. Par conséquent, la définition de la propriété Selected dans votre code est ignorée. La seule fois où il est respecté est lorsque vous ne vous liez pas à une propriété de modèle, par exemple en utilisant

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

Notez que vous pouvez inspecter le code source , en particulier les SelectInternal() et GetSelectListWithDefaultValue() pour voir comment il fonctionne en détail.

Pour afficher l'option sélectionnée lors du premier rendu de la vue, définissez la valeur de la propriété dans la méthode GET avant de transmettre le modèle à la vue.

Je recommande également que votre modèle de vue contienne une propriété IEnumerable<SelectListItem> TipoviDepozita et que vous SelectList la SelectList de SelectList dans le contrôleur

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

alors la vue devient

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






html-helper