缓存问题:在缓存的页面加载期间忽略了ascx / usercontrol的程序化Page.Title

时间:2013-12-06 03:33:33

标签: c# asp.net caching ascx

问题是:当用户访问Default.aspx时,页面加载Blog.ascx内容的缓存版本(因为它在600秒内再次访问同一页面),因此不会执行Page.Title代码标题保持空白,而不是在第一次新加载页面时使用<title>Title of Blog Post</title>


我的asp.net网站有Blog.ascx来处理加载单个博文的内容。 Default.aspx包含对Blog.ascx的引用并使用它 Blog.ascx页面具有自定义缓存:

    <%@ OutputCache Duration="600" VaryByParam="None" VaryByCustom="Url" %>

位于global.asax.cs的自定义缓存是:

    public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        switch (custom.ToUpper())
        {
            case "URL":
                return context.Request.Url.ToString().ToLower().Trim();
            default:
                throw new NotImplementedException();
        }
    }

Blog.ascx.cs Page_Load事件处理程序化标记的值/内容

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Title = "Title of Blog Post";
    }

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用UserControls? 如果您为页面的内容创建了UserControl,则可以将OutputCache声明移动到控件,从而释放Page_Load事件以在每次访问时设置页面标题。