Link to home
Start Free TrialLog in
Avatar of uswebpro9
uswebpro9Flag for Czechia

asked on

Can a aspx page pass a parameter to a master page?

Hello,
I would like pages that use my Master page to be able to tell the master page whether to load the wide or normal style. Based on this I will show/hide different controls and CSS files.

So can an aspx page pass a parameter to its master page?
Or does it load too late in the page cycle?
private bool isWide;
 
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    public bool IsWide
    {
        get { return isWide; }
        set { isWide = value; }
    }

Open in new window

Avatar of uswebpro9
uswebpro9
Flag of Czechia image

ASKER

Hello,
I'm aware that you can register & show/hide controls and css files in the aspx pages. However I do not want to have a ton of redundant code.
i dont know about passing parameters but you definitely can access the content pages controls on the master page
the follwoing link provides u the sample for that
http://www.velocityreviews.com/forums/t114087-access-content-page-controls-from-within-the-master-page.html
Hi.

Yes you can

First thing to do is to declare a of what type you MasterPage is. To do so you have to add MasterType declaration right after Page declaration in your content aspx file, like:
<%@ Page ... %>
<%@ MasterType TypeName="MyNamespace.MyMasterPage" %>

Second thing to do is to define a public property on master page (IsWide in your case)

Third thing is to set this property from content page in Page_Load event, like:
this.Master.IsWide = true;

At this point it should be Master page's responsability to load needed controls and styles.

HTH
R
Right, as I mentioned above. There would be a lot of redundant code if I start accessing the controls on the master page. currently I'm doing this, however it's starting to get messy because I have the same code on 50+ pages now.

It would be cleanest to say this.MasterPage.IsWide = true;

And on the masterPage PageLoad do all the special stuff.

Can I do this some how?
I don't know who you just replied to but if you have no luck with my suggestion just please tell.

R
Hey,
The comment above was to ragi0017
Ramuncikas - Thanks! I will try this now.

It might be tricky because I have 5 different masterpages.

In the Global.asax file I set the masterpage and themes based on a setting from a resource file.

Hello Ramuncikas ,
1 question about how to set:
<%@ MasterType TypeName="MyNamespace.MyMasterPage" %>

The master pages has this on the top:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="TechSeminar.master.cs" Inherits="MasterPages_TechSeminar" %>

What do I put for TypeName?
I would prefer to establish this on the aspx.cs code behind page. Can this be done?


thanks!
ASKER CERTIFIED SOLUTION
Avatar of Ramuncikas
Ramuncikas
Flag of Lithuania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Bingo, it worked.

So, an aspx page can send a parameter to it's masterpage.

In this case the parameter hides some user controls.

thanks Ramuncikas!
aspx page:
 
ASP.FrontMasterPage master = (ASP.FrontMasterPage)this.Master;
        master.IsWide = true;
 
 
masterpage cb:
 
public partial class FrontMasterPage : System.Web.UI.MasterPage
{
 
    private bool isWide;
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (isWide)
        {
            headControl1.Visible = false;
        }
    }
 
    public bool IsWide
    {
        get { return isWide; }
        set { isWide = value; }
    }
   
}

Open in new window