【问题标题】:How to pass a model to the MVC 3 Razor "masterpage"如何将模型传递给 MVC 3 Razor “母版页”
【发布时间】:2011-05-22 22:34:18
【问题描述】:

如何将模型传递给 MVC 3 Razor “母版页”?

Razor 视图引擎不同于 aspx 视图引擎。

【问题讨论】:

  • 不,不一样,因为 Razor 视图引擎的工作方式与 aspx 视图引擎不同。有 _ViewStart.cshtml 和 _Layout.cshtml
  • 不一样,但它仍然包含可以提供帮助的建议...请参阅下面的答案

标签: asp.net-mvc-3


【解决方案1】:

布局页面将“继承”内容页面的模型。您是否试图让布局页面与内容页面具有不同的模型?

【讨论】:

  • 不确定 help001,但我想这样做。我在 master 中有一个状态栏,我总是想从模型的最高级别显示一些信息(称为产品)。各个视图具有 Product.Parts、Product.Contractors 等模型。由于它们都可以访问 Product,因此我希望将其“向上”传递给主视图。
【解决方案2】:

我不确定 _Layout.cshtml 是否可以有单独的模型。

也许您应该研究一个 M-V-VM 配置,其中 ViewModel 继承自 BaseViewModel 类,该类提供 _Layout.cshtml“MasterPage”所需的必要共享数据。

这里有关于 MVVM 的重要信息:Stack Overflow: MVVM ViewModel vs MVC ViewModel。 还有关于将共享 ViewModel 功能推入基类的信息:Stack Overflow: Push Common ViewModel functionality into a base class?

[更新] Martin 最初评论中的链接虽然不代表您的问题的直接副本,但确实包含一些有关如何注入基本 ViewModel 功能而控制器不需要知道任何相关信息的信息...在此处重新链接:Stack Overflow: Passing Data to Master Page in ASP.Net MVC

【讨论】:

    【解决方案3】:

    视图引擎之间没有区别,因为模型不是表示层的一部分。 使用基本应用程序控制器创建和填充共享模型,并将对它的引用传递给请求上下文的 ViewBag 属性。 阅读:

    Passing Data to View Master Pages - an ASP.NET tutorial

    ViewBag dynamic in ASP.NET MVC 3

    【讨论】:

      【解决方案4】:
      public ActionResult Test(TestModel model)
      {
      }
      

      TestModel 是一个模型类.. 像这样你可以将模型传递给母版页

      【讨论】:

      • 我不明白这样做有什么帮助..?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2011-05-08
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      相关资源
      最近更新 更多