Элементы обновления ASP.NET в Master? - PullRequest
0 голосов
/ 20 июля 2011

Я веб-дизайнер, поэтому я редко пачкаю руки в .NET-коде. Я делаю немного легкого кодирования, переназначая некоторый код из одной области сайта в другую. Как нацелить элементы в мастере? У меня есть следующее на странице, которая вызывает мастер, который содержит lblError и pnlError ...

    public void AddError(string error)
    {
        if (error != "")
        {
            lblError.Text = error;
            pnlError.Visible = true;
        }
    }

Я получаю сообщение об ошибке, в котором говорится, что элементы не существуют в текущем контексте. Как мне сказать, чтобы искать элементы в мастере?

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Вы можете использовать следующее в коде для любой страницы:

var masterpage = this.Master as MyMasterPageClass;

MYMasterPageClass - это тип вашей главной страницы, приведение к которой позволит вам получить доступ к определенным свойствам вашей страницы.

Также обратите внимание, что вы не сможете получить доступ к элементам управления напрямую, поскольку они являются частными.Однако в коде главной страницы вы можете сделать общедоступным свойством, которое позволяет вам изменять их значения.

public partial class MYMasterPageClass : System.Web.UI.MasterPage
{
    public string Error
    {
        get { return lblError.Text;}
        set { lblError.Text = value; }
    }
}
0 голосов
/ 19 августа 2011

Так что я не знаю, является ли это самым чистым способом сделать это, но мне помогло следующее ...

   public void AddError(string error)
    {
        if (error != "")
        {
            Label mpLabel = (Label)Page.Master.FindControl("lblError");
            mpLabel.Text = error;

            Panel mpPanel = (Panel)Page.Master.FindControl("pnlError");
            mpPanel.Visible = true;
        }
    }
...