Solved

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

Posted on 2013-01-25
15
291 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
Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.

 
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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

726 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