2012-04-28 8 views
5

Considere la siguiente situación:controles de usuario y JavaScript y páginas principales

hay una página principal con una ContentPlaceHolder para todos javascript ...

para la velocidad issuses esta sección se encuentra en la parte inferior de la página.

mi control de usuario genera algo de JavaScript que hacen uso de algunas referencias en la página maestra Javascript (jQuery)

así, si mi control de usuario se procesa antes que la página maestra Javascript, no va a funcionar.

y esta es mi pregunta: ¿

cómo hago algo de JavaScript bloque de código dentro de mi archivo .ascx a ser prestados a la ASP: contenido JavaScript en la página .aspx

o tal vez mi todo pensamiento es worng?

Gracias!

+0

¿El javascript en ascx también es requerido por la página maestra? – Adil

+0

no, solo por la página – YardenST

Respuesta

3

ver si esto funciona para usted:

¿Dónde en el "fondo" de la página maestra? Si lo mueve dentro del cierre del lado del servidor de control de forma y utilizar ClientScript.RegisterStartupScript en el control de usuario, se inyectará el guión de su control "antes de la etiqueta de cierre <form/>" (que será después su secuencia de comandos estática llamada).

página maestra - justo por encima de el servidor del lado de cierre ASP.Net </form>:

.... 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js "></script> 
</form> 

Contenido (nada especial): Control de

<%@ Register src= .... 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> 
    <uc1:jscript_inject ID="jscript_inject1" runat="server" /> 
</asp:Content> 

usuario:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "foo", @"alert('foo');", true); 

} 

Así es como se representa (vista en HTML para urce en navegador):

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js "></script> 

<script type="text/javascript"> 
    //<![CDATA[ 
    alert('foo');//]]> 
</script> 
.... 
</form> 

Como anuncian, alert('foo'); está por debajo de la llamada cdn jq "predefinido" ....

+1

¿cómo es posible registrar la secuencia de comandos de inicio desde el archivo .ascx? no es muy fácil manejar grandes scripts a través del código detrás – YardenST

0

Saludos útil. Curiosamente, esto funciona para Page.ClientScript.RegisterStartupScript pero no Page.ClientScript.RegisterClientScriptInclude, y en su lugar, el 'incluir' se agrega a la parte superior del formulario.

Cuestiones relacionadas