2011-09-25 55 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

很好的答案謝謝 –