Je voudrais passer la liste des objets fortement typés à une liste déroulante qui se trouve sur ma vue.Comment passer une liste d'objets de type fort d'un contrôleur à une liste déroulante sur une vue?
Habituellement pour y parvenir je ViewBags comme dans l'exemple suivant:
public ActionResult ChooseLevel()
{
List<Levels> LevelList = GetAllLevels();
ViewBag.LevelList = LevelList
var model = new Levels();
return View(model);
}
Et je voudrais simplement écrire ceci sur une vue, et je recevrais tous mes niveaux énumérés là:
<div class="form-group">
@Html.LabelFor(model => model.LevelId, new { @class = "control-label col-md-3 col-sm-3" })
<div class="col-md-9 col-sm-9">
@Html.DropDownListFor(model => model.LevelId, new SelectList(ViewBag.LevelList, "LevelId", "LevelName"), "", new { @class = "form-control" })
</div>
</div>
Mais maintenant, je me demande si je peux simplement passer ma liste de niveaux là-bas, et les choisir dans la liste déroulante, sans les stocker dans un viewbag en premier? Par exemple:
public ActionResult ChooseLevel()
{
List<Levels> LevelList = GetAllLevels();
return View(LevelList);
}
Sur une vue j'accepter plusieurs articles en écrivant IEnumerable
sur une vue:
@model IEnumerable<Levels>
et après que je pourrais en quelque sorte choisir un seul élément et l'afficher à un serveur ?
Comment puis-je résoudre ce problème?
Une précision: Pourquoi utiliser un 'IEnumerable' la vue si vous attendez un seul élément de 'DropDownList' passé dans viewmodel? Même vous pouvez passer la liste viewmodel avec 'Model.LevelList' comme' @ Html.DropDownListFor (model => model.LevelId, nouvelle SelectList (Model.LevelList, "LevelId", "LevelName"), "", nouvelle {@class = "form-control"}) '. –
La liaison d'une liste déroulante à elle-même n'a aucun sens (votre modèle est 'Level' et les options que vous générez sont' Level'.) Qu'essayez-vous d'accomplir ici? –
@StephenMuecke J'ai besoin d'une vue avec une seule liste déroulante), et cette liste déroulante devrait me permettre de sélectionner l'un des niveaux –