Html.DropDownList valeur sélectionnée ne fonctionne pas à l'aide de ViewBag
Bien, après quelques heures à lire des trucs, ici, en essayant, sans succès, toutes les solutions, on les retrouve aussi cet article que j'ai pensé qu'il serait sauvé ma vie... rien.
Longue histoire courte.
Voici mon point de Vue (toutes les combinaisons)
@Html.DropDownList("yearDropDown",(IEnumerable<SelectListItem>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDownxxx",(IEnumerable<SelectListItem>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDown",(<SelectList>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDown")
Voici mon Contrôleur
public ActionResult(int year)
{
var years = new int[] { 2007, 2008, 2009, 2010, 2011, 2012 }
.Select(x => new SelectListItem {
Text = x.ToString(),
Value = x.ToString(),
Selected=x==year }).Distinct().ToList();
years.Insert(0, new SelectListItem { Value = null, Text = "ALL YEARS" });
ViewBag.yearDropDown = new SelectList(years, "Value", "Text", years.Where(x => x.Selected).FirstOrDefault());
return View();
}
Voici mon rendu HTML. Sélectionné nulle part pour être trouvée.
<select id="yearDropDown" name="yearDropDown"><option value="">ALL YEARS</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
Inutile de mentionner, mais je vais, j'ai vérifié dans ma Montre et SelectList a effectivement SelectedValue bien remplie avec la sélection de l'année passée pour le contrôleur. Mais quand je me rend à la vue, elle va à la première option.
S'il vous plaît, j'ai besoin de la solution pour DropDownList
, PAS pour DropDownListFor
. Je suis en lumière ce parce que j'ai vu d'autres personnes ici pour demander de l'aide mêmes et des tas de personnes qui leur a donné des instructions, et presque de l'ordre, de les utiliser DropDownListFor. Il ya une raison pourquoi j'ai BESOIN d'utiliser DropDownList.
SOLUTION:
Regarde ma propre réponse.
Cependant, ici, sont les simples modifications que j'ai apportées.
Contrôleur:
ViewBag.yearDropDown = years;
Vue:
@Html.DropDownList("yearDropDown")
OriginalL'auteur Pepito Fernandez | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Le problème peut aussi être le nom, voir ici.
Dans le Contrôleur
Dans la Vue
Cela ne fonctionne pas, vous devez modifier le nom, donc c'est pas la même.
Donc changer yearDropDown et il Va Travailler pour vous.
Cordialement
Christian Lyck.
sur modifier, comment savoir celle sélectionnée(celle qui est sélectionnée) à partir de la liste
Cela a fonctionné pour moi...
OriginalL'auteur LuckyLyck
Dernier paramètre est ici
SelectListItem
, mais il doit être sélectionnévalue
(string dans votre exemple)SelectList Constructeur (IEnumerable, String, String, Object)
OriginalL'auteur webdeveloper
Je sais que c'est une vieille question, mais je vais partager une autre solution, car parfois vous avez fait les choses correctement, mais vous ne pouvez pas voir la valeur sélectionnée après une demande et la réponse, depuis votre rasoir a un bug peut-être. Dans cette condition, que j'ai eu, vous pouvez sélectionner l'option à l'aide de viewbag:
Dans le contrôleur, j'ai eu:
et privé en fonction de contrôleur, j'ai eu:
Et dans .cshtml j'ai eu:
J'espère que ce sera utile pour des problèmes similaires 🙂
OriginalL'auteur Elnaz
Changer le nom du ViewBag propriété de ne PAS correspondre au nom de la DropDownList.
Utilisation
ViewBag.yearDropDownDD
au lieu deViewBag.yearDropDown
.AUSSI, vous êtes à la création de la SelectList à tort.
Vous devez passer la valeur sélectionnée pas à l'élément de tableau:
Et quelle a été la solution?
J'ai édité ma question avec la solution. Merci
OriginalL'auteur Romias
Le premier endroit où j'aurais dû aller à apprendre.... et je n'ai pas.
Voici ma solution
Je vous remercie je vous remercie pour vos réponses. Vraiment l'apprécier. J'ai envie de faire mon propre pied aujourd'hui. Deux heures de lecture de blogs et il m'a fallu 2 minutes pour répliquer cet exemple et a parfaitement fonctionné...
J'ai édité ma question avec la solution. Merci.
OriginalL'auteur Pepito Fernandez