0

在控制器中:

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--")

当模型未经过验证并且应该再次重定向到此视图时,就会发生此错误。

4

1 回答 1

1

检查您的 [HttpPost] 方法。我有同样的错误。这导致我忘记创建 ViewBag。我的 [HttpPost] 方法的 else 块中的属性 。例如:

    [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 变为 null。

于 2013-10-31T09:18:32.213 回答