Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法从内容页中的嵌套母版页访问控件_Asp.net_Master Pages_Master - Fatal编程技术网

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";