3

我没有掌握 MVC 模型的一些概念基础知识,我希望得到一些有用的澄清。

在我的 MVC 4 Web 应用程序中,我有一个为 DropDownList 构建 IEnumerable<SelectListItem> 的视图模型,如果我在视图中执行此操作:

@model MyApp.Models.MyModel

@Html.DropDownListFor(x => x.MyThingID, Model.MySelectList, "Select...")

我收到“对象引用未设置为对象的实例”错误。

但如果我这样做:

@model MyApp.Models.MyModel

@{ var myModel = new MyApp.Models.MyModel(); }
@Html.DropDownListFor(x => x.MyThingID, myModel.MySelectList, "Select...")

有用。但是这种显式实例化对我来说看起来和感觉都非常错误,我不确定我是否应该在控制器中做任何事情,此时这只是一个简单的“返回 View()”ActionResult。

我找不到太多好的指导,最终我正在尝试实现一些级联下拉菜单,所以我需要更好地了解它是如何工作的。如果您有时间和意愿提供帮助,我将不胜感激。

4

1 回答 1

2

您应该将模型传递给视图。您可以在控制器代码中执行此操作:

return View(myModel);

代替

return View(); // without the model!

你的模型是 MyApp.Models.MyModel 的类型。只需初始化它并通过它。

public ActionResult YourAction()
{
    var myModel = new MyApp.Models.MyModel();
    // do other actions or put more data inside myModel
    return View(myModel);
}
于 2012-11-27T20:01:33.857 回答