2015-11-10 51 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

只是建议像*瘟疫*这样的术语不适合描述什么基本上是基于函数调用的片段:)大多数工具都有用处。 –