0

我有母版页。下面是设计器部分。

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            <asp:Label ID="lblMaster" runat="server" Text=""></asp:Label>
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

在 Master Page 的 page_load 中,我写 lblMaster.Text = "Master";

在我的 Asp.Net 页面中,

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MasterPractice.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:Label ID="lblfrm" runat="server" Text="Label"></asp:Label>
</asp:Content>

在我的 page_load 我得到,

lblfrm.Text = "Form";

我在我的母版页上收到上述错误。

请指导我提到的问题。

4

1 回答 1

1

因为Label是在ContentPlaceHolder控件内部,所以您必须首先获取对 的引用ContentPlaceHolder,然后使用它的FindControl方法来定位Label

ContentPlaceHolder Content2;
Label  lblfrm;
Content2 = (ContentPlaceHolder)Master.FindControl("Content2");
if(Content2 != null)
{
    lblfrm = (Label) Content2.FindControl("lblfrm");
    if(lblfrm != null)
    {
        lblfrm.Text = "Form";
    }
}

如何:参考 ASP.NET 母版页内容

编辑lblMaster按照评论中的要求查找:

ContentPlaceHolder ContentPlaceHolder1;
Label  lblMaster;
ContentPlaceHolder1 = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(ContentPlaceHolder1 != null)
{
    lblMaster = (Label) ContentPlaceHolder1.FindControl("lblMaster");
    if(lblMaster != null)
    {
        lblMaster.Text = "Master";
    }
}
于 2012-10-16T07:35:12.737 回答