这两种情况有区别吗:
(1) 从常规子级访问母版页上的属性
(2) 从嵌套母版页访问母版页上的属性
我尝试从如下内容页面访问母版页中的文本框:
TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
defaultTextbox.Text = a.Text; // defaultTextBox is a textbox control inside default.aspx
它有效,但是当我在嵌套母版页上应用相同的方法时:
TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
myTextBox.Text = a.Text; // myTextBox is a textbox control inside child.master
这不起作用,我错过了什么吗?我在常规 page_load 处理程序中调用这两个代码...
我还注意到我无法从代码后面设置嵌套母版页内的文本框值,肯定缺少一些东西,它是什么? 为了阐明这个问题,这里有一个例子:
嵌套母版页:
<%@ Master Language="C#" MasterPageFile="MasterPage.master" AutoEventWireup="false" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:textbox id="tx2" runat="server" text="this is two"></asp:textbox>
<asp:contentplaceholder id="newstuff" runat="server"></asp:contentplaceholder>
</asp:Content>
隐藏代码:
Response.Wrote(tx2.Text);
我什么也没得到,为什么我错过了什么?请注意,我还尝试了递归查找控件:
String str = ((TextBox)((Content)FindControl("Content2")).FindControl("tx2")).Text;
还是没有
最佳答案
ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.Master.FindControl("ContentPlaceHolder1");
//base content place holder id
Label objLabel3 = (Label)cp.FindControl("lblNested");
//lblNested is id in nested master page
关于asp.net - 如何访问嵌套母版页内的控件?为什么它的行为与内容页面不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874357/