2010-06-23 22 views

Respuesta

6

Usted puede hacer esto en Page_PreInitas explained here:

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    switch (Request.QueryString["theme"]) 
    { 
     case "Blue": 
      Page.Theme = "BlueTheme"; 
      break; 
     case "Pink": 
      Page.Theme = "PinkTheme"; 
      break; 
    } 
} 
+0

@this. __curious_geek, ¿por qué prefieres hacerlo en Page_Load no Pre_Int? –

1

mantienen una página de base común para todas sus páginas ASP.NET y modificar la propiedad de tema entre cualquier evento después de PreInit o antes de la Page_Load en la página base. Esto obligará a cada página a aplicar ese tema. Como en este ejemplo, haga de MyPage una página base para toda su página asp.net.

public class MyPage : System.Web.UI.Page 
{ 
    /// <summary> 
    /// Initializes a new instance of the Page class. 
    /// </summary> 
    public Page() 
    { 
     this.Init += new EventHandler(this.Page_Init); 
    } 


    private void Page_Init(object sender, EventArgs e) 
    { 
     try 
     { 
      this.Theme = "YourTheme"; // It can also come from AppSettings. 
     } 
     catch 
     { 
      //handle the situation gracefully. 
     } 
    } 
} 

//in your asp.net page code-behind 

public partial class contact : MyPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 
+0

No haga esto en Page_Load, sino en 'PreInit'. –

+0

derecha. Actualizado la respuesta. Gracias. –

3

Es una respuesta muy tarde, pero creo que te gustará este ..

Puede cambiar el tema de la página en el evento PreInit, pero no tiene que usar una página base ...

En la página maestra, cree un menú desplegable llamado ddlTema, después de eso, escriba este bloque de código en su Global.asax. . Vea cómo funciona la magia :)

public class Global : System.Web.HttpApplication 
{ 

    protected void Application_PostMapRequestHandler(object sender, EventArgs e) 
    { 
     Page activePage = HttpContext.Current.Handler as Page; 
     if (activePage == null) 
     { 
      return; 
     } 
     activePage.PreInit 
      += (s, ea) => 
      { 

       string selectedTheme = HttpContext.Current.Session["SelectedTheme"] as string; 
       if (Request.Form["ctl00$ddlTema"] != null) 
       { 
        HttpContext.Current.Session["SelectedTheme"] 
         = activePage.Theme = Request.Form["ctl00$ddlTema"]; 
       } 
       else if (selectedTheme != null) 
       { 
        activePage.Theme = selectedTheme; 
       } 

      }; 
    } 
Cuestiones relacionadas