Solved

How can you have a MasterPage inherit a BasePage?

Posted on 2009-05-11
2
452 Views
Last Modified: 2013-11-07
Hi,

I'm fresh to .NET 2.0 (started today) so please be patient with me! :) .

I have a masterpage and have completed the layout.
I created a BasePage and have set some variables.
I have a content (default.aspx) page and its inheriting from the BasePage.

The content page can read the variables from the BasePage.
The MasterPage cannot read the values: "CS0103: The name 'config__path_js' does not exist in the current context".

How can I get the masterpage to inherit from BasePage? I've been looking on the net and apparently you can't but there must be a way to achieve this.

In general, I want to have one file that contains variables which is fed from an XML file.
I want to be able to access these variables from Masterpage, content pages and user controls.

How can I do this?
App_Code/BasePage.cs

~~~~~~~~~~~~~~~~~~~~

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Xml;
 

/// <summary>

/// This BasePage is used to have content pages inherit these variables

/// </summary>

public class BasePage : System.Web.UI.Page

{
 

    public String config__path_root;

    public String config__path_img;

    public String config__path_swf;

    public String config__path_flv;

    public String config__path_css;

    public String config__path_js;

    public String config__path_pdf;
 

    protected override void OnInit(EventArgs e)

   {

       XmlDocument doc = new XmlDocument();

       doc.Load(Server.MapPath("~/config.xml"));

       XmlNode root = doc.DocumentElement;
 

       config__path_root = root.SelectSingleNode("path_root").ChildNodes[0].Value;

       config__path_img = root.SelectSingleNode("path_img").ChildNodes[0].Value;

       config__path_swf = root.SelectSingleNode("path_swf").ChildNodes[0].Value;

       config__path_flv = root.SelectSingleNode("path_flv").ChildNodes[0].Value;

       config__path_css = root.SelectSingleNode("path_css").ChildNodes[0].Value;

       config__path_js = root.SelectSingleNode("path_js").ChildNodes[0].Value;

       config__path_pdf = root.SelectSingleNode("path_pdf").ChildNodes[0].Value;

   }
 

}
 
 
 

Default.aspx.cs

~~~~~~~~~~~~~

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;
 

public partial class _Default : BasePage 

{

    protected void Page_Load(object sender, EventArgs e)

    {

        

    }

}
 
 
 

MasterPage.master.cs

~~~~~~~~~~~~~~~~~~

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;
 

public partial class MasterPage : System.Web.UI.MasterPage

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

}

Open in new window

0
Comment
Question by:bloodtrain
2 Comments
 
LVL 12

Accepted Solution

by:
williamcampbell earned 500 total points
ID: 24356839
You don't have to inherit you could make the variables static

    public static String config__path_root;
    public static String config__path_img;

 
   Then access them

    BasePage.config__path_root;

  Also the usual way to store config variables is in web.config using ConfigurationManager

  Take a look at that it offers global access to config variables.
0
 
LVL 2

Author Comment

by:bloodtrain
ID: 24357943
Thanks williamcampbell for your reply. I didn't want to use the web.config because I need to use some programming logic as well when declaring the variables. This seems to work great so thanks a lot!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now