web-dev-qa-db-fra.com

Asp.net mvc liste déroulante utilisant ViewBag

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? 

5
I.Bond

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:

https://msdn.Microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.dropdownlist%28v=vs.111%29.aspx?f=255&MSPPError=-2147217396

11
Ehsan Sajjad

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 

  • la liste pour remplir la DropDownList avec
  • la valeur ("Id")
  • le texte ("Nom")

comme paramètres.

2
Valentin Sky

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");
1
SumitS.