2011-09-25 54 views
4

是否可以在Razor布局视图中声明一个函数或帮助器,并让子Razor视图使用该函数?我的结构是:@父母的功能继承剃刀布局

_layout.cshtml - > index.cshtml

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

我希望能够在_layout.cshtml中放置常用函数/助手,并在index.cshtml和所有其他使用_layout.cshtml的视图中引用它们。除非我错过了一些东西,否则它不会起作用。

我知道。我应该使用编译好的AppHelpers或者HtmlHelpers来实现这个功能,但是我可以预见到能够直接在_layout.cshtml文件中调整选择函数/帮助程序的方便性。

谢谢

回答

7

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

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

例如定义~/App_Code/MyHelpers.cshtml

@helper Foo() 
{ 
    ... 
} 

,然后在一些观点:

@MyHelpers.Foo() 

但我会建议编制的帮手。他们是单元测试友好的和查看引擎不可知论的,当明天微软公布他们全新的刀片视图引擎时,你将有0件工作要做,以便使用它们,而如果你针对剃刀具体的东西,如@functions@helper,你将不得不移动他们。可能不是你的问题,但值得一提。

+0

很好的答案谢谢 –