Я виникла цю помилку "Немає пункту ViewData типу IEnumerable, який має ключ" StatusOptions ", коли я намагаюся використовувати DropDownListFor і вказую на список вибору
Я знаю, що щодо цього вже багато питань, але жодна з них не вирішила моєї проблеми.
Скажімо, я реалізую випадаючий список як фільтрдля завдань на основі їх статусів. Отже, FilterView відповідає FilterModel, але контролер є більш загальним PageController, який відповідає PageModel, тому я не можу мати список статусів, що містяться в моделі, а не ViewBag або ViewData.
Я також не хочу "hardcode" статусів у поданні, оскільки вони підтримуються зовнішньої служби.
Ось що я зараз роблю:
public class FilterModel
{
public string SelectedStatus {get;set;}
}
на моєму PageController:
public Result ListTasks()
{
...
ViewBag.StatusOptions = new SelectList (
new[] { "New", "Pending", "Completed"}.Select(x => new SelectListItem { Value = x, Text = x }),
"Value",
"Text"
);
...
}
на мій погляд:
Html.DropDownListFor(model => model.SelectedStatus, (IEnumerable<SelectListItem>)ViewBag.StatusOptions)
Я також спробував відправити його до SelectList або за допомогою ViewData ["StatusOptions"], і не працює.
Відповіді:
0 для відповіді № 1Здається, ви намагаєтеся відлити SelectList
(введіть для ViewBag.StatusOptions) як IEnumerable<SelectListItem>
. Якщо призначити List<SelectListItem>
to ViewBag.StatusOptions, тоді він повинен працювати.
0 для відповіді № 2
ВиберітьList замість SelectListItem
Html.DropDownListFor(model => model.SelectedStatus, ViewBag.StatusOptions as SelectList)