исключение nullreferenceException не было обработано пользовательским кодом на мастер-странице

У меня есть мастер-страница. Ниже приведена часть конструктора.

<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>

В 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";

Я получаю указанную ошибку на моей главной странице.

Пожалуйста, помогите мне решить упомянутые проблемы.


person sachin kulkarni    schedule 16.10.2012    source источник
comment
Почти все случаи NullReferenceException одинаковы. Некоторые подсказки см. в разделе Что такое NullReferenceException в .NET?.   -  person John Saunders    schedule 16.10.2012


Ответы (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";
    }
}
person Tim Schmelter    schedule 16.10.2012
comment
Привет, Тим, я хочу получить информацию ниже. Присвойте значения элементам управления мастер-страницы. Я получаю сообщение об ошибке на мастер-странице при назначении значения элементу управления. - person sachin kulkarni; 16.10.2012
comment
@sachinkulkarni: Извините, я не совсем понимаю. - person Tim Schmelter; 16.10.2012
comment
Элемент управления lblMaster находится на главной странице. Как я могу присвоить ему значения. - person sachin kulkarni; 16.10.2012
comment
@sachinkulkarni: То же, что и для другого ярлыка, соответственно отредактировал мой ответ. - person Tim Schmelter; 16.10.2012