We help IT Professionals succeed at work.

How can you have a MasterPage inherit a BasePage?

bloodtrain
bloodtrain asked
on
504 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

Comment
Watch Question

This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
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!
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.