2012-05-28 29 views
11

tengo un ASP.net UserControl que requiere que la página que contiene incluya una referencia a jquery.¿Cómo incluir jQuery en la página ASP.net?

En los viejos tiempos, simplemente habría incluido una referencia a jQuery en la página que contiene:

<HEAD> 
    <SCRIPT type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></SCRIPT> 
</HEAD> 

Pero la dependencia de mi control de usuario en jQuery es un detalle de implementación interna, que no debe ser una fuga al exterior . ¿Cómo puede mi userControl dictar que jQuery se incluya en la página final?


Investigando esto, encuentro una gran cantidad de soluciones confusas, llamando a diferentes funciones en diferentes momentos. dudo en mencionar cualquiera de ellos, porque la gente puede pensar que alguno de ellos es válido. Estoy esperando la respuesta correcta, no es una respuesta que funcione.

Diferentes soluciones implican llamar:

Mi confusión se centra en:

  • cuando iba a querer usar RegisterClientScriptInclude vs RegisterStartupScript?
  • ¿Cuándo me gustaría llamarlo durante Page_Load vs Render vs PreRender frente a un clic del botón?
  • ¿cómo le doy a RegisterXxxxScriptXxx la ruta al "Scripts/jquery-1.7.2.min.js"?

versión corta: ¿Cómo convierto

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 
    Inherits="_Default" %><!DOCTYPE html> 
<html> 
<head runat="server"> 
    <script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script> 

para su uso en un control de usuario:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MySuperCoolControl.ascx.cs" Inherits="Controls_MySuperCoolControl" %> 
+0

Si se me hizo un control personalizado, voy a colocar una variable booleana que la base en la que mi control automáticamente registrar o no la biblioteca completa de jQuery. De esa forma, dejé al usuario final para decidir cómo le gustaría incluir el jQuery. Mi control automático de forma automática, o su camino. – Aristos

+0

Está confundido porque no considera que cada solución que mencionó maneja situaciones diferentes (más o menos). Por ejemplo, algo así como un marco incluido no tendrá lugar en una carga de página (mientras que el inicio del almacenamiento en caché de imágenes lo haría, lo que podría depender del marco). –

+0

Diría que los únicos tres que se deben tener en cuenta son 1, 5 y 7. Los otros son situaciones basadas en eventos o en instancias, que no es el lugar donde debe incluirse un marco. –

Respuesta

1

[esto sólo es relevante si el control de usuario se va a utilizar en casa. Si es para la distribución entonces no va a ser de mucha ayuda]

Tome un vistazo a este enlace:

http://www.codeproject.com/Articles/196727/Managing-Your-JavaScript-Library-in-ASP-NET

El artículo sugiere la creación de métodos para generar las referencias a bibliotecas javascript como jQuery, de modo que si desea usarlo en una página simplemente llame a JavascriptLoader.IncludeJQuery() [o lo que sea que haya llamado su método].

Ahora lo que he hecho es dar un paso más allá al crear esos métodos en un conjunto que he colocado en el GAC para que esté disponible para todas mis aplicaciones web .net. Ahora, donde quiera que use jQuery, ese método ya está disponible. Lo mejor es que si llamo al método en un control de usuario y lo vuelvo a llamar en otro control de usuario, y nuevamente en la página, aún solo registra la biblioteca una vez. Si decido actualizar a una versión más reciente de jQuery, solo cambio mi dll, y ha cambiado en todas partes.

2

Puede usar un ScriptManagerProxy en el UserControl y un ScriptManager en la página principal o maestra.

Ver How Do You Use ScriptManagerProxy In a custom ASP.NET Control

Esto se haría cargo de "Dar RegisterXxxxScriptXxx el camino a 'Scripts/jquery-1.7.2.min.js' y eliminar la necesidad de preocuparse por ello durante los eventos Load/Page_PreRender.

en cuanto a "Cuando iba a querer usar RegisterClientScriptInclude vs RegisterStartupScript?"

RegisterClientScriptInclude registra un archivo externo de JS para ser incluido en la página. RegisterStartupScript incluye un bloque de script ejecutable en línea en la página, que no está en un archivo externo.

3

Puede utilizar Google alojada jQuery de la siguiente manera:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
Cuestiones relacionadas