如何在asp.net的userControl中使用OutputCache

如何在asp.net的userControl中使用OutputCache,asp.net,user-controls,outputcache,dynamic-usercontrols,Asp.net,User Controls,Outputcache,Dynamic Usercontrols,我有一个aspx页面,其中有一段代码用于加载从数据库加载的usercontrol Control userControl = new Control(); userControl = LoadControl(userControlName); ((HiddenField)userControl.FindControl("HiddenFieldCategoryID")).Value = categoryID.ToString(); ((HiddenField)userControl.Find

我有一个aspx页面,其中有一段代码用于加载从数据库加载的usercontrol

Control userControl = new Control();

userControl = LoadControl(userControlName);

((HiddenField)userControl.FindControl("HiddenFieldCategoryID")).Value = categoryID.ToString();

((HiddenField)userControl.FindControl("HiddenFieldNewsID")).Value = newsID.ToString();

((HiddenField)userControl.FindControl("HiddenFieldTypeID")).Value = typeID.ToString();

PlaceHolder3.Controls.Add(userControl);
ascx有一个输出缓存

<%@ OutputCache Duration=10 VaryByParam="none" %>

当我浏览网页时 这个错误出现了

[NullReferenceException:对象 引用未设置为的实例 反对。] 内容\u部分新闻。页面\u加载(对象 c:\Documents中的发件人、事件参数(e) 和设置\Administrator\My 文档\ Visual Studio 2005\Projects\AnaweenNews.root\AnaweenNews\anaween website\Content\SectionNews.aspx.cs:127 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、对象o、对象t、事件参数e) +14 System.Web.Util.CallEventHandlerDelegateProxy.Callback(对象 发送方,事件参数e)+35 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint)+627

版本信息:Microsoft.NET 框架版本:2.0.50727.3615; ASP.NET版本:2.0.50727.3618


从LoadControl返回的类型将是PartialCachingControl,请按照以下步骤使用PartialCachingControl:

PartialCachingControl userControl = LoadControl(userControlName) as PartialCachingControl;

PlaceHolder3.Controls.Add(userControl);

if(userControl.CachedControl != null)
{
    ((HiddenField)userControl.CachedControl.FindControl("HiddenFieldCategoryID")).Value = categoryID.ToString();    

    ((HiddenField)userControl.CachedControl.FindControl("HiddenFieldNewsID")).Value = newsID.ToString();

    ((HiddenField)userControl.CachedControl.FindControl("HiddenFieldTypeID")).Value = typeID.ToString();
}
可能重复的