/ / DropDownListFor funktioniert nicht mit ViewData oder ViewBag - c #, asp.net-mvc

DropDownListFor funktioniert nicht mit ViewData oder ViewBag - c #, asp.net-mvc

Ich habe diesen Fehler festgestellt "Es gibt kein ViewData-Element vom Typ IEnumerable mit dem Schlüssel" StatusOptions "", wenn ich versuche, DropDownListFor zu verwenden und auf eine Auswahlliste zu zeigen

Ich weiß, dass es schon eine Menge Fragen dazu gibt, aber keine hat mein Problem gelöst.

Angenommen, ich implementiere eine Dropdown-Liste als Filterfür Aufgaben basierend auf ihren Status. Die FilterView entspricht also FilterModel, aber der Controller ist ein generischer PageController, der PageModel entspricht. Daher kann ich nicht die Statusliste im Modell enthalten, sondern ViewBag oder ViewData.

Ich möchte auch nicht die Status in der Ansicht fest codieren, da sie von einem externen Dienst unterstützt werden.

Das mache ich gerade jetzt:

public class FilterModel
{
public string SelectedStatus {get;set;}
}

in meinem PageController:

public Result ListTasks()
{
...
ViewBag.StatusOptions = new SelectList (
new[] { "New", "Pending", "Completed"}.Select(x => new SelectListItem { Value = x, Text = x }),
"Value",
"Text"
);
...
}

aus meiner Sicht:

Html.DropDownListFor(model => model.SelectedStatus, (IEnumerable<SelectListItem>)ViewBag.StatusOptions)

Ich habe auch versucht, es auf SelectList oder ViewData ["StatusOptions"] zu werfen, funktioniert auch nicht.

Antworten:

0 für die Antwort № 1

Es scheint, du versuchst zu wirken SelectList (Geben Sie ViewBag.StatusOptions ein) IEnumerable<SelectListItem>. Wenn Sie zuweisen List<SelectListItem> zu ViewBag.StatusOptions dann sollte es funktionieren.


0 für die Antwort № 2

SelectList stattdessen SelectListItem

Html.DropDownListFor(model => model.SelectedStatus, ViewBag.StatusOptions as SelectList)