在母版页中包含的用户控件中引用文本时遇到一些问题

本文关键字:文本 遇到 问题 引用文 引用 包含 母版页 用户 控件 | 更新日期: 2023-09-27 18:30:46

在母版页中包含的用户控件中引用文本时遇到一些问题。我正在使用以下页面进行测试(路径可能不必要地包含......

~/_inc/header.ascx
~/master_pages/partner_header_footer.master
~/credit_check/test_page.aspx

header.ascx (相關內容)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="header.ascx.cs" Inherits="_inc_header" %>
<link type="text/css" rel="stylesheet" href="/css/header.css" />
    <div id="header" class="content-header cf">
    <div id="logo"></div><asp:Literal id="contentTitle" runat="server" Text="Customer Service" /> 
</div>

partner_header_footer.大师(相关内容)

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="partner_header_footer.master.cs" Inherits="master_pages_partner" %>
<%@ Register Src="~/_inc/header.ascx" TagPrefix="uc1" TagName="header" %>
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title>Wireless</title>
</head>
<body>
    <form id="form1" runat="server">
        <uc1:header runat="server" ID="header" />
        <asp:ContentPlaceHolder id="Wireless" runat="server">
        </asp:ContentPlaceHolder>
    </form>
</body></html>

test_page.cs(相关内容)

protected void Page_Load(object sender, EventArgs e)
{
         Literal mpLiteral = (Literal)Master.FindControl("contentTitle");
        if (mpLiteral != null)
        {
            mpLiteral.Text = "Customer Service Home";
        }
  }

不知道我做错了什么,所以希望有人能指出我的方式的错误......

在母版页中包含的用户控件中引用文本时遇到一些问题

由于文本位于母版页内的用户控件中,因此母版FindControl将无法找到它。

如果要使 UC 的文本可供主服务器使用,请在 UC 的代码隐藏中创建属性:

public string MyLiteral { get{ return contentTitle.Text; } set{ contentTitle.Text = value; } }

然后,在母版页中,可以访问header.MyLiteral以设置/获取值。

现在,如果要使其可供子页面访问,则可以再次将其公开为属性,但这次是在主页面的代码隐藏中:

public string HeaderLiteral { get{ return header.MyLiteral; } set{ header.MyLiteral = value; } }

最后,在子页面中,您需要将this.Master转换为母版页的类型(我认为它是基于您的 MP 标记master_pages_partner):

var castedMaster = (master_pages_partner)this.Master;
if(null != castedMaster)
{
    castedMaster.HeaderLiteral = "Customer Service Home";
}