【问题标题】:@Functions inheritance from parent Razor layout@Functions 从父 Razor 布局继承
【发布时间】:2011-09-25 16:42:20
【问题描述】:

是否可以在 Razor 布局视图中声明函数或助手并让子 Razor 视图使用该函数?我的结构是:

_layout.cshtml -> index.cshtml

其中 index.cshtml 使用 _layout.cshtml 作为其布局。这是默认结构。

我希望能够将常用函数/帮助程序放在 _layout.cshtml 中,并在 index.cshtml 和所有其他使用 _layout.cshtml 的视图中引用它们。除非我错过了什么,否则它不能开箱即用。

我知道。我应该为此使用已编译的 AppHelpers 或 HtmlHelpers,但我可以预见到能够直接在 _layout.cshtml 文件中调整选择函数/帮助程序会非常方便。

谢谢

【问题讨论】:

    标签: asp.net-mvc inheritance razor


    【解决方案1】:

    不,这是不可能的。 @functions 仅在当前视图中可见。

    您可以使用@helper,它可以放在App_Code 文件夹中,并在所有视图中重复使用。

    例如你定义~/App_Code/MyHelpers.cshtml:

    @helper Foo()
    {
        ...
    }
    

    然后在某些方面:

    @MyHelpers.Foo()
    

    但我会推荐已编译的助手。它们是单元测试友好的并且与视图引擎无关,当明天微软展示他们全新的 Blade 视图引擎时,你将有 0 工作要做才能使用它们,而如果你针对 Razor 特定的东西进行编码,例如 @functions@helper 你将不得不移植它们。您可能不关心,但值得一提。

    【讨论】:

      猜你喜欢
      • 2023-02-16
      • 2020-10-15
      • 2014-11-07
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多