Solved

How do I find the title / name of the master page of my user contol?

Posted on 2013-01-25
15
288 Views
Last Modified: 2013-03-10
I'd like to hide or show a couple columns on my user control based on which page (master page) is using the control. How, in my OnDataBound event, do I retreive the name of the master page that is using the control? My app is written in ASP .NET 3.5 [C#].
0
Comment
Question by:mikesExpertExchange
  • 8
  • 6
15 Comments
 
LVL 7

Expert Comment

by:tipsybroom
ID: 38820733
you could iterate through the parents until you find the desired control, such as with an extension method.

public static Control GetParentOfType(this Control childControl,
                                   Type parentType)
  {
      Control parent = childControl.Parent;
      while(parent.GetType() != parentType)
      {
          parent = parent.Parent;
      }
      if(parent.GetType() == parentType)
            return parent;

     throw new Exception("No control of expected type was found");
  }

Open in new window

0
 
LVL 41

Expert Comment

by:guru_sami
ID: 38820842
Did you try this: this.Page.MasterPageFile
0
 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38820920
@guru_sami: then do I access the ".Name" or ".Title" property (in your 2nd suggestion)? I'm oot at my computer now but will be shortly to try this.
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38820923
oot = not
0
 
LVL 41

Expert Comment

by:guru_sami
ID: 38820934
Nope...that will be the path like /yoursite/MasterPageName.master
you can simply extract the name from that string.
Something like:
this.Page.MasterPageFile.Split('/').LastOrDefault().Split('.').FirstOrDefault()

Open in new window

0
 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38820975
@ guru_sami: ok I'll try this in a little while.
0
 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38821305
@ guru_sami: That's close, all i got was: "site", any indication on how to drill down to the correct value?
0
 
LVL 41

Expert Comment

by:guru_sami
ID: 38821312
You page must be a content page with masterpage.
What's the value you are getting for MasterPageFile?
Add this to test...
Response.Write(this.Page.MasterPageFile);
0
 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38821318
I get: "site/Master"
0
 
LVL 41

Accepted Solution

by:
guru_sami earned 500 total points
ID: 38821330
then try this work...

this.Page.MasterPageFile.Split('/').Last();
0
 
LVL 1

Author Comment

by:mikesExpertExchange
ID: 38821336
still the same (more or less): "site.master"
0
 
LVL 41

Expert Comment

by:guru_sami
ID: 38821358
site.Master or site/Master?
0
 
LVL 1

Assisted Solution

by:mikesExpertExchange
mikesExpertExchange earned 0 total points
ID: 38821368
i think i got both. "site/Master" from: this.Page.MasterPageFile and "site.master" from: this.Page.MasterPageFile.Split('/').Last();

this however:

            Page page = HttpContext.Current.Handler as Page;
            pageTitle = page.ToString();

did work
0
 
LVL 41

Expert Comment

by:guru_sami
ID: 38821392
But isn't that the page itself?
Or may be I am misunderstanding...
By "master page" do you mean the .aspx Page or the .master MasterPage?
0
 
LVL 1

Author Closing Comment

by:mikesExpertExchange
ID: 38970873
thank you
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

770 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