2011-02-10 4 views
1

У меня есть страница ASPX, которые имеют этот кусок кода для загрузки UserControl загружается из базы данныхкак использовать OutputCache в UserControl в asp.net

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

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

, когда я просматриваю страницу эта ошибка выходит

[NullReferenceException: Object ссылка не указывает на экземпляр объекта ] Content_SectionNews.Page_Load (Object отправителя, EventArgs е) в C:. \ Documents и Settings \ Администратор \ Мои документы \ Visual Studio 2005 \ Projects \ AnaweenNews.root \ AnaweenNews \ anaween сайта \ Content \ SectionNews.aspx.cs: 127 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr Ф.П., объект О, объект т, EventArgs е) +14 System.Web.Util.CalliEventHandlerDelegateProxy .Callback (объект отправитель, EventArgs e) +35 System.Web.UI.Control.OnLoad (EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.3615; ASP.NET версии: 2.0.50727.3618

+0

возможный дубликат [Что такое NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –

ответ

2

Тип, который вернулся из 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(); 
}