[英]Can not access control from nested master page in content page
我正在使用嵌套母版頁,我想在嵌套母版頁中使用Label
控件並更新其文本。 但它沒有訪問。 當我刪除外部母版頁然后它工作正常。 以下是標記和代碼。
外面的主人
<%@ 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" %>
內容頁
<%@ Page Language="C#" AutoEventWireup="true" Inherits="RequestsView" CodeBehind="ViewRequestsByPM.aspx.cs" MasterPageFile ="~/Roaster/RoasterMaster.Master" Title ="Roaster- View Requests by PM" %>
<%@ MasterType VirtualPath ="~/Roaster/RoasterMaster.Master" %>
內容頁面代碼
protected void Page_Load(object sender, EventArgs e)
{
Label lblTitle = new Label();
lblTitle =(Label)Master.FindControl("lblTitle");
lblTitle.Text = "View Roaster Request";
}
實施出了什么問題。 請幫忙。 謝謝
您可以在下面添加以下代碼段
嵌套的主頁
public string PageTitle { get; set; } // In page_load
lblTitle.Text = PageTitle;
內容頁面代碼
this.Master.PageTitle = "YOUR TEXT";
這對你有用......
假設您的標簽位於名冊母版頁中,您只需添加方法即可在后面的母版頁代碼中設置文本。 例如,
在RoasterMaster.master.cs中
public void SetTitle(string value)
{
this.lblTitle = value;
}
並在內容頁面代碼中
Master.SetTitle("View Roaster Request");
如果您的標簽在外部主設備中,那么您可以類似地將名稱從名冊主代碼轉發到外部主設備。
編輯
您的代碼在嵌套的主案例場景中不起作用,因為主頁面內容在頁面控件層次結構中添加了不同的命名容器。 FindControl
方法不會跨越多個命名容器,這就是這里的例子 - 因為嵌套你有嵌套的命名容器。 Page.Master
會為您提供外部命名容器,但您的標簽可能位於內部命名容器中。 其中一種方法是編寫自己的查找控件實現,它將在控制樹中重現,但實際上它沒有意義 - 我寧願使用上面的代碼,它更有效,更重要的是更好的可維護性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.