嵌套的ASP.NET用户控件为空

问题描述 投票:0回答:1

我正在使用Visual Studio 2017和.NET 4.7.1开发ASP.NET应用程序。我有一个名为ContentStatsViewer.ascx的简单用户控件,该控件显示几个标签。要显示的值通过公共属性传递。

NumericContentStatsViewer.ascx之类的其他控件包括ContentStatsViewer.ascx的实例以及其他内容,例如:

<uc:ContentStatsViewer runat="server" ID="csvMain"></uc:ContentStatsViewer>

此控件还具有一些属性,这些属性设置为建立要显示的数据。其中一些属性委托回嵌入式ContentStatsViewer.ascx的属性,例如:

public Data_Activities.ElementsRow Data_Element
{
    get => this.csvMain.Data_Element;
    set => this.csvMain.Data_Element = value;
}

最后,我通过动态加载来在常规网页上使用NumericContentStatsViewer.ascx控件。例如:

var ncsv = new NumericContentStatsViewer();
paMain.Controls.Add(ncsv);

我正在Page_Load事件处理程序上执行此操作,并且似乎工作正常。但是,一旦我尝试设置一个委派回嵌入式控件的属性,就会出现异常。例如,如果我执行以下操作:

ncsv.Data_Element = rElement;

...我在Data_Element属性设置器上收到NullReferenceException,因为this.csvMain为空。

我不明白为什么它为空。我尝试将其移至其他页面事件处理程序,例如Page_LoadCompletePage_PreRender,但结果相同。

有什么想法吗?谢谢。

c# asp.net user-controls dynamic-usercontrols
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.