簡體   English   中英

無法從內容頁面中的嵌套母版頁訪問控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM