问题
I am having master page.Below is the Designer part.
<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>
In page_load of Master Page ,I write lblMaster.Text = "Master";
In my Asp.Net page,
<%@ 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>
In my page_load I get,
lblfrm.Text = "Form";
I am getting the mentioned error at my master page.
Please guide me for mentioned concerns.
回答1:
Because the Label
is inside a ContentPlaceHolder
control, you must first get a reference to the ContentPlaceHolder
and then use its FindControl
method to locate the Label
.
ContentPlaceHolder Content2;
Label lblfrm;
Content2 = (ContentPlaceHolder)Master.FindControl("Content2");
if(Content2 != null)
{
lblfrm = (Label) Content2.FindControl("lblfrm");
if(lblfrm != null)
{
lblfrm.Text = "Form";
}
}
How to: Reference ASP.NET Master Page Content
Edit: To find lblMaster
as requested in comment:
ContentPlaceHolder ContentPlaceHolder1;
Label lblMaster;
ContentPlaceHolder1 = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(ContentPlaceHolder1 != null)
{
lblMaster = (Label) ContentPlaceHolder1.FindControl("lblMaster");
if(lblMaster != null)
{
lblMaster.Text = "Master";
}
}
来源:https://stackoverflow.com/questions/12909604/nullreferenceexception-was-unhandled-by-user-code-in-master-page