web-dev-qa-db-de.com

Asp.net mvc Dropdown-Liste mit ViewBag

Meine Tabelle in db hat Felder: Id, Organisation, Info.

Ich möchte eine Dropdowm-Liste machen:

<select>
  <option value='Id there'>'Organisation there'</option>...

Ich versuche es mit ViewBag:

ViewBag.Organisations = db.Organisations.ToList(); // get all fields from table using dbContext

und in View:

@Html.DropDownList('I don`t know what i shoud write here, please help')

Wie kann ich Dropdown-Listen erstellen? 

5
I.Bond

Sie müssen eine SelectList in Controller-Aktion mit einem der verfügbaren Konstruktoren erstellen. In View übergeben Sie die DropDownList-Methode als Parameter.

Im Controller tun Sie dies:

ViewBag.Organisations = new SelectList(db.Organisations.ToList(),"Id","Organisation");

in SelectList müssen wir angeben, welche Eigenschaft als value und welche als text im option-Tag verwendet werden soll, den wir in den letzten beiden Parametern angeben. 

und dann müssten Sie es in View folgendermaßen verwenden:

@Html.DropDownList("Organization",ViewBag.Organisations as SelectList)

Hier wird der erste Parameter als Name des Elements select verwendet und der zweite Parameter wird zum Auffüllen der Elemente option in der Variable select verwendet.

Im Folgenden finden Sie eine Liste der für Html.DropDownList verfügbaren Überladungen:

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

11
Ehsan Sajjad

Ich empfehle Ihnen, ein ViewModel für Ihre Seite mit einer OrganisationId-Eigenschaft zu definieren. Dieser Wert wird also gefüllt, wenn Sie einen Eintrag in der Dropdown-Liste der Organisationen auswählen.

@model BCO.Models.SelectOrganisationViewModel

@{
    ViewBag.Title = "OrganisationInfo";
}

<div>
    @Html.DropDownListFor(o => o.OrganisationId,
        new SelectList(ViewBag.Organisations, "Id", "Name"))
</div>

Die SelectList erwartet sich 

  • die Liste, mit der die DropDownList gefüllt werden soll
  • der Wert ("Id")
  • der Text ("Name")

als Parameter.

2
Valentin Sky

Sie können selectlist von viewbag wie folgt verwenden

@Html.DropDownListFor(m => m.Name, ViewBag.GetData as SelectList, new { @class = "form-control" })

hier wird ViewBag.GetData vom Controller aufgefüllt. Der Controller-Code sollte wie folgt aussehen

ViewBag.GetData = new SelectList(repository.GetOrganisation(), "ID", "OraganizationName");
1
SumitS.