Asp.net 无法从内容页中的嵌套母版页访问控件
我使用的是嵌套母版页,我希望使用嵌套母版页中的Asp.net 无法从内容页中的嵌套母版页访问控件,asp.net,master-pages,master,Asp.net,Master Pages,Master,我使用的是嵌套母版页,我希望使用嵌套母版页中的标签控件并更新其文本。但它不是在访问。当我删除外部母版页时,它工作正常。下面是标记和代码 外部主控台 <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Roster.Site" %> <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Roas
标签控件并更新其文本。但它不是在访问。当我删除外部母版页时,它工作正常。下面是标记和代码
外部主控台
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Roster.Site" %>
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="RoasterMaster.master.cs" Inherits="Roster.RoasterMaster" MasterPageFile="~/Site.Master" %>
<%@ MasterType VirtualPath ="~/Site.Master" %>
实施中出现了什么问题。请帮忙。谢谢假设您的标签位于花名册母版页中,您只需添加方法来设置母版页代码中的文本。比如说,
在RoasterMaster.master.cs中
和在内容页代码中
Master.SetTitle("View Roaster Request");
在这种情况下,您的标签位于外部主机中,然后您可以类似地从花名册主机代码向外部主机转发调用
编辑
您的代码在嵌套的母版案例场景中不起作用,因为母版页内容使用不同的命名容器添加到页面控件层次结构中FindControl
方法不跨多个命名容器,这里就是这种情况-由于嵌套,您有嵌套的命名容器Page.Master
将为您提供外部命名容器,但您的标签可能位于内部命名容器中。其中一种方法是编写自己的find控件实现,该实现将在控件树中递归,但实际上没有意义-我宁愿使用上面的代码,它更高效,更重要的是更易于维护。您可以在
嵌套母版页
public string PageTitle { get; set; } // In page_load
lblTitle.Text = PageTitle;
内容页代码
this.Master.PageTitle = "YOUR TEXT";
这将对您有用…您知道如何使用公共属性吗?这是一种更好的设置/获取标签值的方法。您必须首先使用master.master或page.master来查找特定母版页,其中包含控件“lblTitle”。页面“”上有特定的标记
Master.SetTitle("View Roaster Request");
public string PageTitle { get; set; } // In page_load
lblTitle.Text = PageTitle;
this.Master.PageTitle = "YOUR TEXT";