views:

1137

answers:

4

I have several aspx pages that can be opened either normally (full screen in browser), or called from another page as a popup (I am using Greybox, fwiw)

If the page is opened as a popup in Greybox, I would like to NOT display the master page content (which displays common top and left menus, etc).

As far as I know, there is no way of knowing server side if the page is a popup, this must be detected in client side javascript (in the case of Greybox, by checking window.parent.parent), and therefore the master page content must be hidden via javascript as well.

Any ideas on how to approach this?

+1  A: 

Well you could conditionally render the navigation controls etc. based on a querystring, pass the string in when it's a popup and if it exists don't render the controls. There are a few different ways to do it, but I think you should have the server not render the controls rather than client side hiding them.

P.S. Haven't heard of Greybox so I can't offer any specific insight there.

Quintin Robinson
+5  A: 

Create a simplified master page for the popup. Override the OnPreInit method (of the actual page) and switch out the masterpage based on a querystring argument:

protected override void OnPreInit(EventArgs e)
{
        base.OnPreInit(e);

        if(Request["PopUp"] == "Y")
        {
            MasterPageFile = "~/MyPopUp.master";
        }
}
HectorMac
A: 

I agree. This is a server-side problem, not something to scrape into shape on the client side. It may also be valuable to organize your web pages where the common content between the pop-up and a main page is maintained separately and imported server-side into the page that has the master-page surround. Pages that link pop-ups should use the comment content, not the surrounder.

Lots of ways to do this (but I don't suppose anyone wants to know how FrontPage extensions help). Try server-side includes.

orcmid
A: 

http://api.jquery.com/load/ is a better way to do this which eliminates the problem.

tbone