【问题标题】:ASP.NET UserControl CachingASP.NET 用户控件缓存
【发布时间】:2011-03-03 00:29:45
【问题描述】:

这件事快把我逼疯了。我有一个名为 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 属性。

问题是在初始加载页面后,控件生成OK。但是,在 Page_Load 事件中,它们不再可用。所以 a1 和 a3 为空,我无法为不同的用户设置 FeedName。

如何解决?

谢谢!

【问题讨论】:

  • RPM1984:谢谢提示。我不想实现的是让我们在页面上说四个用户控件。当页面加载时,我为用户控件设置了一些参数,显示的控件是给定参数的缓存控件。 VaryByContol 也无济于事:(
  • 好的 - 我明白你现在要做什么了。查看类似的 SO 问题:stackoverflow.com/questions/880937/….

标签: asp.net caching user-controls


【解决方案1】:

您意识到 VaryByParam 会在 OutputCache 中为 HTTP GET / POST QueryString 中的每个可变参数集创建一个新条目。。 p>

在用户控件引用上设置 FeedName 属性不会改变用户控件的缓存。

关于这里的缓存,您到底想达到什么目的?

我想你要找的是VaryByControl

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多