ASP.NET Templating with BasePage vs MasterPage

77 Views Asked by At

I have to deal with an ASP.NET project in which i have to support localization and translation. Change of colture may happen only in InitializeCulture method of Page object and not on MasterPage.

Usually when i have to deal with common elements (header/footer) i put them in MasterPage but doing so prevent me to properly localize those elements. So i am intereseted in understand how to template a page using a common base page that will be derived by all other pages (a sort of MasterPage).

I have found this article that explain clearly how to handle such situation, but i think is a bit outdated : https://www.codeproject.com/Articles/2915/ASP-NET-Page-Templates-Using-Inheritance

So i would ask if there is a better approach or technology to achieve my goal.

1

There are 1 best solutions below

1
On BEST ANSWER

Here a simple demo of how to send a variable to the Master Page. Put a public property in the Master named Language.

public partial class Site1 : System.Web.UI.MasterPage
{
    public string Language { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = $"My language is {Language}.";
    }
}

Then add a property for the Master in the normal page and cast Page.Master to your Master Page's partial class (Site1 by default).

public partial class Default1 : System.Web.UI.Page
{
    public Site1 master;

    protected void Page_Load(object sender, EventArgs e)
    {
        master = (Site1)Page.Master;
    }

Then you can access Language in the Master from the Page.

master.Language = "nl-NL";