как использовать OutputCache в userControl в asp.net - PullRequest
1 голос
/ 10 февраля 2011

У меня есть страница aspx с этим фрагментом кода для загрузки пользовательского элемента управления, загруженного из базы данных

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: объект ссылка не установлена ​​на экземпляр объект.] Content_SectionNews.Page_Load (Объект отправитель, EventArgs e) в c: \ Documents и Настройки \ Администратор \ Мой Документы \ Visual Studio 2005 \ Projects \ AnaweenNews.root \ AnaweenNews \ anaween сайт \ Content \ SectionNews.aspx.cs: 127 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, объект o, объект t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object отправитель, EventArgs e) +35 System.Web.UI.Control.OnLoad (EventArgs д) +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

1 Ответ

2 голосов
/ 07 мая 2012

Типом, возвращаемым из 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...