Solved

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

Posted on 2013-01-25
15
294 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
More Than Just A Video Library

Train for your certification. Learn the latest DevOps tools. Grow your skillset to do better work.

At Linux Academy, we release new training modules every week so you'll always be up to date on the latest tech.

 
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

Learn by Doing. Anytime. Anywhere.

Do you like to learn by doing?
Our labs and exercises give you the chance to do just that: Learn by performing actions on real environments.

Hands-on, scenario-based labs give you experience on real environments provided by us so you don't have to worry about breaking anything.

Question has a verified solution.

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

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

717 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