Solved

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

Posted on 2008-10-08
9
1,916 Views
Last Modified: 2010-09-13
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

0
Comment
Question by:uswebpro9
  • 5
  • 3
9 Comments
 

Author Comment

by:uswebpro9
ID: 22667404
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.
0
 
LVL 26

Expert Comment

by:Anurag Thakur
ID: 22667634
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
0
 
LVL 14

Expert Comment

by:Ramuncikas
ID: 22667694
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
0
 

Author Comment

by:uswebpro9
ID: 22667697
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?
0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 
LVL 14

Expert Comment

by:Ramuncikas
ID: 22667777
I don't know who you just replied to but if you have no luck with my suggestion just please tell.

R
0
 

Author Comment

by:uswebpro9
ID: 22667898
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.

0
 

Author Comment

by:uswebpro9
ID: 22667919
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!
0
 
LVL 14

Accepted Solution

by:
Ramuncikas earned 500 total points
ID: 22667988
<%@ MasterType TypeName="MasterPages_TechSeminar" %>

Well, actually MasterType declaration is not mandatory. Sure you can always use codebehind.
If you don't set MasterType declaration then in codebehind of your content page you should do something like this:

MasterPages_TechSeminar master = (MasterPages_TechSeminar)this.Master;
master.IsWide = true;

MasterType declaration just ensures that page's Master property returns correct/desired type of master page. If you don't put MasterType declaration then you have to do the above manual type conversion to access you property.

R

0
 

Author Comment

by:uswebpro9
ID: 22671367
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

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

759 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

18 Experts available now in Live!

Get 1:1 Help Now