这件事让我疯了。我有一个名为WebUserControl的UserControl。
我需要缓存此控件,因此我将以下内容放在WebUserControl.ascx中:
<%@ OutputCache Duration="240" VaryByParam="FeedName" %>
然后我有Default.aspx文件,我有:
<div class="divInnerLeft" id="L1" runat="server">
<uc1:WebUserControl FeedId="a1" ID="a1" runat="server" FeedName=""/>
</div>
<div class="divInnerMiddle" id="M1" runat="server">
<uc1:WebUserControl FeedId="a3" ID="a3" runat="server" FeedName=""/>
</div>
在Page_Load事件中,我根据用户首选项设置了FeedName属性。
问题是在最初加载页面后,控件生成正常。但是,在Page_Load事件中,它们不再可用。所以a1和a3为空,我不能为不同的用户设置FeedName。
如何解决这个问题?
谢谢!
答案 0 :(得分:3)
您意识到 VaryByParam 会为 HTTP GET / POST QueryString 中设置的每个不同的parmateter在 OutputCache 中创建一个新条目。
在用户控件引用上设置 FeedName 属性不会改变用户控件的缓存。
你到底想要在缓存方面做些什么?
我认为你要找的是VaryByControl