我有一个父母版页(Master.Master)和子母版页(Child.Master)。 Child.Master继承Master.Master主页文件。现在在Child.Master中我想将Div(其ID为Div1)的可见性设置为false,我正在使用以下代码:
protected void Page_Load(object sender, EventArgs e)
{
this.FindControl("Div1").Visible = false;
}
以下是Child Master Page文件中的代码:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Webstore.Master.cs" Inherits="WebStore.WebStoreMaster" MasterPageFile="~/Login.Master" %>
<asp:Content ID="UserMaster" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<div id="Div1" runat="server">
<div id="Sidebar" runat="server" style="float: left; margin-top: 100px; margin-right: 20px;">
</div>
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</asp:Content>
编译器给出了以下错误:
Object reference not set to an instance of an object.
有人可以解释为什么会这样吗??
感谢您的期待
答案 0 :(得分:5)
编辑:
在这种情况下,如果div是顶级元素,并且您位于div所在的子母版页的page_load中,那么您应该能够做到
Div1.Visible = false;
为什么不使用Panel控件?
答案 1 :(得分:2)
你应该说
this.Master.FindControl("Div1").Visible = false;
答案 2 :(得分:1)
答案 3 :(得分:1)
加载主页面是在page_load之后。因此,当您尝试在page_load期间寻址母版页时,它的属性和方法尚不可用。在页面生命周期中将其向下移动。 ASP.NET Page Life cycle,Another SO answer on Masterpage/page life cycle。在page_load期间加载子master,并在子master page_load期间加载父master。