Нет элемента ViewData типа 'IEnumerable‹SelectListItem›' с ключом 'aboutcar.Doors'

В контроллере:

ViewBag.Doors = new SelectList(new[]
                                          {
                                              new {ID = 1, Name="1-Door"},
                                              new {ID = 2,Name="2-Doors"},
                                              new {ID = 3,Name="3-Doors"},
                                              new {ID = 4,Name="4-Doors"},
                                              new {ID = 5,Name="5-Doors"},
                                              new {ID = 6,Name="6-Doors"},
                                              new {ID = 7,Name="7-Doors"}
                                          },
                            "ID", "Name");

Ввиду:

@Html.DropDownListFor(model => model.aboutcar.Doors, (SelectList)ViewBag.Doors, "--Select--")

Когда модель не проверена и она должна снова перенаправить на это представление, возникает эта ошибка.


person Ali Shahzad    schedule 23.08.2013    source источник
comment
Да Что такое машина?   -  person ckv    schedule 23.08.2013
comment
aboutcar — это класс, вложенный в мою модель основного представления с именем AutoAdvert, а aboutcar имеет свойство Doors.   -  person Ali Shahzad    schedule 23.08.2013
comment
он отлично работает в действии Get, но в действии Post выдает указанную выше ошибку.   -  person Ali Shahzad    schedule 23.08.2013
comment
Можете ли вы опубликовать свой код просмотра полностью.   -  person ckv    schedule 23.08.2013
comment
убедитесь, что у вас нет другого действия [HttpPost], указанного в вашем контроллере. Если это так, вам нужно также поместить то же самое в действие POST.   -  person Sravan    schedule 24.08.2013


Ответы (1)


Проверьте свой метод [HttpPost]. У меня была такая же ошибка. Это связано с тем, что я забыл создать ViewBag.Property в блоке else моего метода [HttpPost]. Например:

    [HttpPost]
    public ActionResult Edit(Model model)
    {
        if (ModelState.IsValid)
        {
            //TO DO
        }
        else
        {
           ViewBag.Doors = new SelectList(new[]
                                      {
                                          new {ID = 1, Name="1-Door"},
                                          new {ID = 2,Name="2-Doors"},
                                          new {ID = 3,Name="3-Doors"},
                                          new {ID = 4,Name="4-Doors"},
                                          new {ID = 5,Name="5-Doors"},
                                          new {ID = 6,Name="6-Doors"},
                                          new {ID = 7,Name="7-Doors"}
                                      },
                        "ID", "Name");
            ViewBag.Error = "Error";
            return View("Edit");
        }
    }

Это приводит к тому, что ViewBag становится нулевым, если происходит перенаправление.

person alinaish    schedule 31.10.2013