87 votes

DropDownListFor Pas de sélection de valeur

Je suis à l'aide de la DropDownListFor méthode d'assistance à l'intérieur d'une page d'édition et je ne suis pas du tout avoir la chance de l'obtenir pour sélectionner la valeur que je précise. J'ai remarqué une question similaire sur Stackoverflow. La solution de contournement proposée a été de, "remplir votre SelectList dans le code de la vue". Le problème est que j'ai déjà essayé et ça ne marche toujours pas.

<%= Html.DropDownListFor(model => model.States, new SelectList(Model.States.OrderBy(s => s.StateAbbr), "StateAbbr", "StateName", Model.AddressStateAbbr), "-- Select State --")%>

J'ai mis un point d'arrêt et ont vérifié l'existence (et la validité) de modèle.AddressStateAbbr. Je ne suis pas sûr de ce que je suis absent.

190voto

wut-globalitworld Points 456

Après avoir cherché pendant une heure, j'ai trouvé le problème qui est à l'origine du choix de ne pas se mettre à l' DropDownListFor. La raison en est que vous utilisez ViewBag nom du modèle de la propriété.

Exemple

public  class employee_insignia
{ 
   public int id{get;set;}
   public string name{get;set;}
   public int insignia{get;set;}//This property will store insignia id
}

// If your ViewBag's name same as your property name 
  ViewBag.Insignia = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

Vue

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.Insignia, "Please select value")

L'option sélectionnée ne sera pas mis à dropdownlist, MAIS Lorsque vous modifiez ViewBag nom différent du nom de l'option sélectionnée montrera correcte.

Exemple

ViewBag.InsigniaList = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

Vue

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.InsigniaList , "Please select value")

32voto

BnWasteland Points 924

Essayer:

 <%= Html.DropDownListFor(
    model => model.AddressStateAbbr,
    new SelectList(
        Model.States.OrderBy(s => s.StateAbbr),
        "StateAbbr",
        "StateName",
        Model.AddressStateAbbr), "-- Select State --")%>
 

ou en syntaxe Razor:

 @Html.DropDownListFor(
    model => model.AddressStateAbbr,
    new SelectList(
        Model.States.OrderBy(s => s.StateAbbr),
        "StateAbbr",
        "StateName",
        Model.AddressStateAbbr), "-- Select State --")
 

Les aides basées sur l'expression ne semblent pas respecter la propriété Selected des SelectListItems dans votre SelectList.

17voto

fiat Points 1542

Tout en ne répondant pas à cette question, cela pourrait aider les futurs googleurs s’ils suivaient mon chemin de pensée:

Je voulais une sélection multiple et cet attribut hack sur DropDownListFor n'était pas sélection automatique

 Html.DropDownListFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems, new {multiple= "multiple" })
 

j'aurais plutôt dû utiliser ListBoxFor, qui a tout fait fonctionner

 Html.ListBoxFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X