asp.net - 如何访问嵌套母版页内的控件?为什么它的行为与内容页面不同?

标签 asp.net master-pages nested

这两种情况有区别吗:

(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/

相关文章:

c# - master.page 中的不同菜单取决于登录类型

c# - 使用正则表达式引用一组文件路径

c# - 如何修改 CompositeControl 的 ClientId,消除所述 ID 的呈现,而不影响 ChildControls?

asp.net - AWS 对象失效 -/如何确定图像是否从 Edge 中删除

c# - 无法绑定(bind)多部分标识符 "xxx"

javascript - 母版页中的 Jquery 日期选择器

asp.net-mvc - 如何在 MVC2 下以编程方式设置母版页

go - 如何将 interface{} 转换为 Golang 中的嵌套树

java - 访问嵌套接口(interface)数据变量

javascript - 使用 Lodash 计算两个标准的总数