【问题标题】:MVC Model InstantiationMVC 模型实例化
【发布时间】:2012-11-27 19:59:32
【问题描述】:

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

在我的 MVC 4 Web 应用程序中,我有一个视图模型,它为 DropDownList 构建一个 IEnumerable,如果我在我的视图中这样做:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多