故障现象:
三层嵌套母版页,用findcontrol方法只能找到第一层母版页的控件,找不到二层和三层的,提示未引用到对象实例错误。
原因分析:
Asp.net的确找不到嵌套母版页的控件,只能找到最顶层母版页的控件,即Master.Master.Master.FindControl才有效。
解决方法:
找到最顶层的容器ContentPlaceHolder
然后通过顶层容器找(findcontrol)第二层容器,在通过第二层容器找第三层容器,再从第二、三层容器中找控件。
实操示例:
顶层母版页:
<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="MasterPage1.master.cs"Inherits="MasterPage1"%>
<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
<asp:ContentPlaceHolderid="CPH_master1_head"runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<formid="form1" runat="server">
<div>
<asp:LabelID="Label_master1"runat="server" Text="Label"></asp:Label>
<hr/>
<asp:ContentPlaceHolderid="CPH_master1_content"runat="server