La cuestión es que heredo todas mis páginas de una plantilla para que se agreguen siempre unas etiquetas script y link sin tener que ponerlas una a una en todas las páginas.
Plantilla.aspx.vb
Código:
Si os fijáis la hoja de estilo está definida por una variable de sesión de modo que la pueda modificar durante la visita del cliente, incluso cargarla al principio de la sesión si el cliente almacenó el tipo en una cookie. Pues bien, utilizo unos LinkButton para cambiar la variable de la sesión y así cambiar la hoja.Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ruta() As String = Request.Path.Split("/") Dim rutaScript As String = "" Dim rutaCSS As String = "" For i As Integer = 2 To ruta.Length - 2 rutaScript += "../" rutaCSS += "../" Next rutaScript += "scripts.js" rutaCSS += "Estilos/estilos" & Session("tipoEstilo") & ".css" RegisterClientScriptBlock("script", "<script language='javascript' src='" & rutaScript & "'></script>") RegisterClientScriptBlock("css", "<LINK title='Estilos' href='" & rutaCSS & "' type='text/css' rel='stylesheet'>") End Sub
Código:
Pero claro, el evento Load de la página se ejecuta antes que click, por lo que me carga la hoja de estilo de antes. Si le vuelvo a dar al botón, como la variable de sesión ya cambió, pues sí que aparece la nueva hoja de estilo.Private Sub lbtnCSSNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbtnCSSNormal.Click Session("tipoEstilo") = "Normal" End Sub Private Sub lbtnCSSGrande_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbtnCSSGrande.Click Session("tipoEstilo") = "Grande" End Sub
En fin, me gustaría que repondiera antes al click, o bien, en lugar de en el evento load de la plantilla, pues en otro evento.
Un poco lioso quizás.
Gracias y un saludo.