Asp.net在用户控件中使用回发​​输出缓存替换

时间:2012-09-12 14:52:50

标签: asp.net postback outputcache substitution

我们有一个网站,其中所有页面都被缓存输出,即缓存在aspx级别,VaryByParam =“*”。现在需要制作一个小小的控件,即一个小小的“这个网站如何为你工作?”然后当用户点击答案时,会显示结果。

将gallup实现为添加到母版页的用户控件,以便可以将gallups添加到在cms中创建了gallup的任何页面。问题是输出缓存自然会缓存所有点击,因此当用户没有2票时,他会看到在第一次投票后计算的结果。

现在我正在尝试使用缓存替代。我添加了一个asp:Substition标签,其中用户控件曾经是,动态加载控件并呈现它(使用这种方法http://coderwall.com/p/4ajzqq)。问题是投票触发器的回发永远不会被触发。显然,替代控件执行的方法是在页面生命周期之外加载的,或者太晚了。

有什么想法吗?

此致 的Mathias

2 个答案:

答案 0 :(得分:2)

我通过跳过替换控件解决了这个问题,并且正常使用了用户控件,因此缓存输出了gallup / question视图。然后在我添加的答案替代品的点击处理程序中 Response.Cache.SetNoServerCaching(); 它将结果视图从输出缓存中豁免,因此它应该更新。

答案 1 :(得分:0)

也可以使用VaryByCustom在Global.asax中使用Response.Cache.SetNoServerCaching()。它只需要在Global.asax中感知页面是否是回发。 Here是一个代码示例。