访问Asp.. NET控件在页PreInit事件中
本文关键字:PreInit 事件 Asp NET 控件 访问 | 更新日期: 2023-09-27 18:13:41
在我的Content Page中有如下标记:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentBody" runat="server">
<asp:label ID="label1" runat="server"></label>
</asp:Content>
在PreInit事件中访问标签时,显示的错误是-对象引用未设置为对象的实例
private void Page_PreInit(object sender, EventArgs e)
{
label1.Text = "Inside PreInit";
}
我做错了什么?有没有办法让Asp。. NET Web控件中的PreInit事件?
No。PreInit
是错误的位置。根据MSDN,控件初始化,然后调用Init
。
https://msdn.microsoft.com/en-us/library/ms178472.aspx lifecycle_events
你应该考虑重新设计你的逻辑,将任何数据传递给Init
。
可以在Pages的PreInit
事件中访问Content Page Controls
请理解这不是推荐的方法。
访问Page_PreInit
事件中的 Page.Master
属性,之后您可以像往常一样访问所有内容页面控件:
public partial class _Default : Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
MasterPage master = this.Master;
// Access any control of Content Page now ....
label1.Text = "Inside PreInit";
}
}
一旦Page的Master属性被访问,它就会调用
CreateChildControls()
,因此控件被初始化,不再有对象引用错误。