how to access master page control from content page

asp.net, code-behind, master-pages

Solution

In the MasterPage.cs file add the `property` of `Label` like this:

public string ErrorMessage
{
    get
    {
        return lblMessage.Text;
    }
    set
    {
        lblMessage.Text = value;
    }
}

On your `aspx` page, just below the Page Directive add this:

<%@ Page Title="" Language="C#" MasterPageFile="Master Path Name"..... %>
<%@ MasterType VirtualPath="Master Path Name" %>   // Add this

And in your `codebehind(aspx.cs)` page you can then easily access the `Label Property` and set its `text` as required. Like this:

this.Master.ErrorMessage = "Your Error Message here";

Problem

I have a master page which contains a label for status messages. I need to set the status text from different .aspx pages. How can this be done from the content page? ``` public partial class Site : System.Web.UI.MasterPage { public string StatusNachricht { get { return lblStatus.Text; } set { lblStatus.Text = value; } } protected void Page_Load(object sender, EventArgs e) { } } ``` I have tried this, but was unsuccessful in making it work: ``` public partial class DatenAendern : System.Web.UI.Page { var master = Master as Site; protected void Page_Load(object sender, EventArgs e) { if (master != null) { master.setStatusLabel(""); } } protected void grdBenutzer_RowCommand(object sender, GridViewCommandEventArgs e) { try { //some code if (master != null) { master.setStatusLabel("Passwort erfolgreich geändert."); } } catch (Exception ex) { if (master != null) { master.setStatusLabel("Passwort konnte nicht geändert werden!"); } } } } } ```

Original source