最近碰上一个问题,需要在内容页中的preinit 事件访问控件,但是却会报错:
未将对象引用设置到对象的实例。程序如下:
 
<%@Page Language="C#" MasterPageFile="~/MasterPage.master" Title="Page"%> 
<asp:ContentID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
    <p>Content</p> 
    <p><asp:Label runat="server" ID="ContentPageLabel" /></p> 
</asp:Content> 
<script runat="server"> 
    protected override void OnPreInit(EventArgs e) 
    { 
                base.OnPreInit(e); 
                ContentPageLabel.Text = "Hello, World!"; 
    } 
</script>
 
在网上查了半天,终于找到了解决方法:
 
   protected override void OnPreInit(EventArgs e)
    { 
                  base.OnPreInit(e); 
        // 下面这一行很重要
        MasterPage master = this.Master;
        ContentPageLabel.Text = "Hello, World!"; 
    } 
网上说是需要先访问一下母版页,这样内容页的控件才能实例化,才能被我们访问到。