1

データベースからロードされたユーザーコントロールをロードするためのこのコードを含む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があります

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

ページを閲覧すると、このエラーが発生します

[NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。] c:\ Documents and Settings \ Administrator \ My Documents \ Visual Studio 2005 \ Projects \ AnaweenNews.root \ AnaweenNews\のContent_SectionNews.Page_Load(Object sender、EventArgs e) anaween website \ Content \ SectionNews.aspx.cs:127 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、Object o、Object t、EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender、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

4

1 に答える 1

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();
}
于 2012-05-07T10:52:34.617 に答える