2015-11-10 111 views
1

在Web窗體控件我可以緩存單獨的控制與一個OutputCache線,如響應:部分緩存剃刀幫手

<%@ OutputCache Duration="240" VaryByParam="none" VaryByCustom="none" %> 

我如何做同樣的用剃刀幫手?

@Helper HelperName(Vars) 
    ' Do stuff, and cache it, return from cache as per parameters etc 
End Helper 
+1

助手只是功能渲染HTML,而不是部分頁面的片段。緩存不適用於助手。 –

回答

1
  1. 利用兒童的行動,這將允許你使用同樣的方式將[OutputCache]屬性,你會與WebForm的控制。

  2. 利用內存中緩存的System.Runtime.Caching。請參閱:https://msdn.microsoft.com/en-us/library/vstudio/ff477235%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

然而,即使你去與#2,我建議你關閉移動你的代碼爲實際HtmlHelper延伸,而不是使用剃刀助手。我不確定爲什麼微軟甚至在這個世界上做出了這些可能,但他們應該像瘟疫一樣避免。它們不會在運行時才被編譯,這意味着如果您有錯誤,只有在正確的環境下訪問正確的頁面時纔會瞭解它,而不是在構建過程中立即通知。更糟糕的是,測試Razor助手幾乎是不可能的,這使得你很可能會引入現場爆發的錯誤。

+1

「助手」只是編譯視圖中的函數。設置你的項目預編譯的意見和編譯錯誤將被發現:) –

+1

這隻適用於發佈時,並且我個人更喜歡知道我的代碼在得到那麼遠之前已損壞。無論如何,這對測試這些問題沒有任何影響,我們都應該測試我們的代碼,對吧?對?!? ;)簡單而簡單,它們是反模式。有更好,更強大的方法來完成同樣的事情,所以請使用它們。 –

+1

只是建議像*瘟疫*這樣的術語不適合描述什麼基本上是基於函數調用的片段:)大多數工具都有用處。 –