asp.net-mvc - @Functions 从父 Razor 布局继承

标签 asp.net-mvc inheritance razor

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

_layout.cshtml -> 索引.cshtml

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

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

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

谢谢

最佳答案

不,这是不可能的。 @functions 仅在当前 View 内可见。

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

例如,您定义~/App_Code/MyHelpers.cshtml:

@helper Foo()
{
    ...
}

然后在某些 View 中:

@MyHelpers.Foo()

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

关于asp.net-mvc - @Functions 从父 Razor 布局继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7544460/

相关文章:

c# - C# .NET MVC Controller 类剖析

javascript - JQuery/Ajax 在 Razor 页面中发布并重定向到从 MVC Action(又名表单提交)返回的 View

java - Spring @RequestBody继承

c# - MVC4 局部 View 错误 "Object reference not set to an instance of an object."

c# - 查看期望 IEnumerable

javascript - MVC3 - 只有第一行链接适用于 Jquery 模态对话框

asp.net-mvc - ASP.NET MVC - Html.Textbox() 抛出 "Object reference not set to an instance of an object"

Java编写库

java - 访问封闭类或父类的方法的一般方法

asp.net-mvc - 对ASP.NET MVC应用程序使用.resx本地化有什么优势?