"ad" <fl****@wfes.tc c.edu.tw> wrote in message
news:e6******** ******@TK2MSFTN GP05.phx.gbl...
For just one page, and change it for a while.
OK, then.
The *only* place that a content page can set its MasterPage is in its
Page_PreInit method, so you're going to have to do the following:
For each content page for which you want to enable dynamic MasterPages,
you'll need to set up a Session variable, which you'll need to initialise on
the Session_Start method in global.asax.
1) E.g. let's say you have a page called MyPage.aspx - in Session_Start,
you'll need to do the following:
Session["MyPage_Mas ter"] = "~/master/Master1.master" ;
2) In the Page_PreInit of MyPage.aspx, you'll need to do the following:
private void Page_PreInit(ob ject sender, EventArgs e)
{
this.MasterPage File = Session["MyPage_Mas ter"].ToString();
}
3) To change the MasterPage, you'll simply need to create an <asp:Button> or
any other webcontrol which can cause a postback, set the
Session["MyPage_Mas ter"] session variable to the new MasterPage, then
Response.Redire ct the page back to itself.
Thereafter, whenever MyPage.aspx is called, it will set its MasterPage to
whatever value is in the Session["MyPage_Mas ter"] session variable.
Sounds a bit convoluted, but it's fairly straightforward once you get your
head round it... :-) Good luck!