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 № 1Es 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)