2009-12-24 7 views

Répondre

13

Il est possible, vous devrez remplacer la méthode de onPreInit de votre classe codebehind comme si ...

protected override void OnPreInit(EventArgs e) 
{ 
    Page.MasterPageFile = "~/your/masterpage.master"; 
} 

Donc, pour lier à un clic, vous pouvez utiliser un paramètre de chaîne de requête, à savoir

<a href="<%=Request.Url.ToString()%>?masterPage=alternative">Use 
alternative master page</a> 

Et puis dans le codebehind

protected override void OnPreInit(EventArgs e) 
{ 
    if(Request["masterPage"] == "alternative") 
    { Page.MasterPageFile = "~/your/alternative/masterpage.master"; } 
} 
2

Vous pouvez avoir une base régulière, non-serveur <form>, avec un champ <input> caché. Lorsque le formulaire publie, vous vérifiez la valeur <input> dans l'événement Pre_Init et modifiez la page principale là.

Vous ne pouvez pas utiliser un formulaire côté serveur avec un événement bouton normal, car ils se déclenchent trop tard dans le cycle de vie de la page.

0

Je l'ai fait récemment où j'ai changé une image sur la page maître en fonction de la page qui était en cours de rendu. Je référencent contrôle

1) (imgPageSpecificTextImg sur le Masterpage)

2) Changé l'URL que le code pointait.

  System.Web.UI.WebControls.Image imgText = (System.Web.UI.WebControls.Image)Master.FindControl("imgPageSpecificTextImg"); 
      imgText.ImageUrl = "images/banner.jpg"; 
Questions connexes