MVC模型实例化

时间:2012-11-27 19:59:32

标签: asp.net-mvc-4 html.dropdownlistfor asp.net-mvc-viewmodel

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

在我的MVC 4网络应用程序中,我有一个构建IEnumerable< SelectListItem>的视图模型。对于DropDownList,如果我在我的视图中这样做:

@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。

我找不到很好的指导,最终我试图实现一些级联下拉,所以我需要更好地掌握它是如何工作的。如果你有时间和倾向协助,我会非常感激。

1 个答案:

答案 0 :(得分:2)

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

return View(myModel);

而不是

return View(); // without the model!

其中yourmodel是MyApp.Models.MyModel的类型。只需初始化并传递它。

public ActionResult YourAction()
{
    var myModel = new MyApp.Models.MyModel();
    // do other actions or put more data inside myModel
    return View(myModel);
}