问题是:当用户访问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";
}
有什么建议吗?
答案 0 :(得分:0)
您是否考虑过使用UserControls? 如果您为页面的内容创建了UserControl,则可以将OutputCache声明移动到控件,从而释放Page_Load事件以在每次访问时设置页面标题。