Foros del Web » Programando para Internet » ASPX (.net) »

RegisterClientScriptBlock() desde global.asax

Estas en el tema de RegisterClientScriptBlock() desde global.asax en el foro de ASPX (.net) en Foros del Web. Muy buenas. Estoy intentando que en todas las páginas que se soliciten se añada un bloque de script en la cabecera, para no tener que ...
  #1 (permalink)  
Antiguo 01/12/2005, 09:05
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
RegisterClientScriptBlock() desde global.asax

Muy buenas.

Estoy intentando que en todas las páginas que se soliciten se añada un bloque de script en la cabecera, para no tener que escribirlo en el código HTML de todas. Así en global.asax he intentado esto:

Código:
Imports System.Web.UI.Page

.....

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        RegisterClientScriptBlock(("script", "<script language='javascript' src='" & ruta & "'></script>")
    End Sub
Pero me indica que "la referencia a un miembro no compartido requiera una referencia de objeto".

Podría hacerlo directamente con Response.Write("<script>...") pero ya no quedaría dentro de la cabecera de la página.

¿Qué objeto debo crear para poder usar RegisterClientScriptBlock() en global.asax?¿Se puede hacer?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 01/12/2005, 09:11
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Hola Bravenap,

Creo que eso podrías hacerlo de la siguiente forma:

1. Te creas un Web Form, Por ejemplo "WebForm1"
2. En el form load de este, registras el ClientScriptBlock
3. Luego haces que todas las páginas que quieres que tengan el script, hereden de "WebForm1"

Creo que con eso bastaría.

Saludos Bravenap.
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 01/12/2005, 09:23
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Ah, claro, como una plantilla ¿no?

WebForm1 ya llevaría Inherits System.Web.UI.Page por lo que en el resto de páginas lo cambio por Inherits nombresolucion.WebForm1 y además de Page me hereda los eventos de webForm1 ¿me equivoco?

Gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 01/12/2005, 11:01
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Bueno, más o menos ya lo he hecho, porque no lo escribe en la cabecera <HEAD> si no después de la etiqueta de <form>, pero de momento me sirve. Explico un poco:

Plantilla.aspx.vb
Código:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim rutaScript() As String = Request.Path.Split("/")
        Dim ruta As String = ""
        For i As Integer = 2 To rutaScript.Length - 2
            ruta += "../"
        Next
        ruta += "scripts.js"
        Response.Write(Request.Path & "<br>")
        Response.Write(ruta)
        RegisterClientScriptBlock("script", "<script language='javascript' src='" & ruta & "'></script>")

    End Sub
Aunque parezca un poco lioso, así consigo que esté donde esté la página que herede plantilla se enlace con el archivo scripts.js que está en el directorio principal.

Bueno, gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 01/12/2005, 19:19
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hmm, no sé porque la _manía_ de generar los scripts desde código.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #6 (permalink)  
Antiguo 02/12/2005, 04:17
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Quizás este mensaje te de la respuesta. Aunque la idea no es generar el script, si no incluirlo en todas las cabeceras, independientemente de dónde esté la página. Upss, veo que ya me has contestado.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 05/12/2005, 09:33
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Yo personalmente lo haría (mas bien lo hago) de ésta forma:

Cita:
...
...
<HEAD>
<script language="javascript" src='archivo.js'></script>
</HEAD>
...
Y si quieres asegurarte que se cargue la ruta bien aunque tengas páginas dentro de un folder.. lo puede hacer así:

Cita:
...
...
<HEAD>
<script language='javascript' src='<%= Request.ApplicationPath + "/archivo.js" %>'></script>
</HEAD>
...

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 06/12/2005, 06:49
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Ah, claro. Siempre se me olvida que puedo meter etiquetas como se hacía con ASP 3. Con lo fácil que era.

Gracias RootK
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 07/12/2005, 10:42
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Qué lio, con tanto cambio ya se me había olvidado por qué no le podía hacer de esa manera RootK. Para evitar escribirlo en todas las páginas, pretendía hacerlo desde global.asax, sólo que desde este archivo no se pueden emitir bloques script, sólo Response.Write().

Al final lo hecho desde un archivo ASCX que uso de cabecera en la mayoría, eso sí, de la forma en que me has indicado.

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:59.