Ma table en base de données contient des champs: Id
, Organisation
, Info
.
Je veux faire la liste de dropdowm comme ça:
<select>
<option value='Id there'>'Organisation there'</option>...
J'essaie de le faire en utilisant ViewBag:
ViewBag.Organisations = db.Organisations.ToList(); // get all fields from table using dbContext
et en vue:
@Html.DropDownList('I don`t know what i shoud write here, please help')
Comment je peux construire une liste déroulante?
Vous devez créer une action SelectList
dans l'action du contrôleur à l'aide de l'un des constructeurs disponibles et lui simplement passer la méthode DropDownList en tant que paramètre.
Dans Controller, faites ceci:
ViewBag.Organisations = new SelectList(db.Organisations.ToList(),"Id","Organisation");
dans SelectList
, nous devons spécifier quelle propriété utiliser comme value
et laquelle utiliser comme text
dans la balise option
que nous spécifions dans les deux derniers paramètres.
puis, dans View, vous devez l’utiliser de la manière suivante:
@Html.DropDownList("Organization",ViewBag.Organisations as SelectList)
Ici, le premier paramètre sera utilisé comme nom de l'élément select
et le second sera utilisé pour renseigner les éléments option
dans la variable select
.
Voici la liste des surcharges disponibles pour Html.DropDownList
:
Je vous recommande de définir un ViewModel pour votre page avec une propriété OrganisationId
. Ainsi, cette valeur sera renseignée lors de la sélection d'une entrée de la liste déroulante des organisations.
@model BCO.Models.SelectOrganisationViewModel
@{
ViewBag.Title = "OrganisationInfo";
}
<div>
@Html.DropDownListFor(o => o.OrganisationId,
new SelectList(ViewBag.Organisations, "Id", "Name"))
</div>
Le SelectList lui-même attend
comme paramètres.
Vous pouvez utiliser selectlist à partir de viewbag comme suit
@Html.DropDownListFor(m => m.Name, ViewBag.GetData as SelectList, new { @class = "form-control" })
ici ViewBag.GetData est rempli à partir du contrôleur, le code du contrôleur devrait être comme
ViewBag.GetData = new SelectList(repository.GetOrganisation(), "ID", "OraganizationName");