我没有掌握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。
我找不到很好的指导,最终我试图实现一些级联下拉,所以我需要更好地掌握它是如何工作的。如果你有时间和倾向协助,我会非常感激。
答案 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);
}