Asp.net 在页面加载时将参数传递给用户控件

Asp.net 在页面加载时将参数传递给用户控件,asp.net,Asp.net,我对.NETFramework的工作模式还比较陌生,因此,如果您有任何帮助/建议,我将不胜感激。基本上我想从母版页调用一个用户控件。但是,我需要将一个对象(更具体地说是对象列表)传递给用户控件。我正在母版页的页面加载中生成对象列表。这是我的母版页中调用用户控件的一行 <cu:Eventlisting1 runat="server" id="eventListing1"></cu:Eventlisting1> 此用户控件具有一个名为CalendarItems的参数,该

我对.NETFramework的工作模式还比较陌生,因此,如果您有任何帮助/建议,我将不胜感激。基本上我想从母版页调用一个用户控件。但是,我需要将一个对象(更具体地说是对象列表)传递给用户控件。我正在母版页的页面加载中生成对象列表。这是我的母版页中调用用户控件的一行

<cu:Eventlisting1 runat="server" id="eventListing1"></cu:Eventlisting1>

此用户控件具有一个名为CalendarItems的参数,该参数接受项目列表。但是,如果我尝试在Page_Load方法内部设置此项,则我的控件在Page_Load之前执行,并抛出一个异常,表示CalendarItems为null。这有什么办法吗

编辑:

试图帮助澄清。我在此页面上有一个下拉列表,用于确定CalendarItems列表是什么,因此当我填充CalendarItems列表时,我需要能够从下拉列表中读取所选值。

尝试在页面的Init方法中填充列表,您的控件将被加载,并且发生在页面加载事件之前。

您可以从setCalendarItems调用initControl函数(现在导致异常的代码)。 我通常更喜欢这样,而不是滥用页面生命周期(使用page.Init),因为这可能会导致其他问题(viewstate等)。
在usercontrol中定义initControl函数并在设置CalendarItems后从控制器(页面或母版页)调用它可能是最好的,因为您保留了尽可能多的控件(比从属性调用initControl更好).

您也可以在创建控件时将列表设置为新的空列表以避免异常,然后按现在的方式填充它。根据代码的外观,可能需要额外的方法调用来重建日历。