Estoy tratando de agregar una referencia de script a jQuery en mi página maestra para que funcione para cualquier página. Actualmente se ve así
<script type="text/javascript" src="jquery.js"></script>
El problema es que la ruta siempre es relativa a la página aspx en ejecución, por lo que esto solo funcionará si el archivo "jquery.js" se encuentra en la misma carpeta. Para que funcione, tengo que cambiar la línea a:
<script type="text/javascript" src="../../jquery.js"></script>
Obviamente, esto no es ideal porque solo funcionará para páginas que estén a dos niveles de profundidad desde la carpeta raíz. Si intento lo siguiente, IIS arroja un error sobre un personaje inesperado.
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
¿Algunas ideas?
EDITAR: Olvidé mencionar también que el guión DEBE estar en la etiqueta principal
La respuesta principal actual arroja un error "El marco del lado del cliente ASP.NET Ajax no se pudo cargar " cuando lo agrego a mi página maestra. Se lanza desde javascript y no desde el compilador .Net. Si muevo el ScriptManager a la sección principal donde debería estar, aparece un error de compilación sobre el ScriptManager que necesita estar dentro de una etiqueta de formulario.
La tercera respuesta arroja una excepción " Caracteres ilegales en la ruta " del compilador.
EDITAR 2: Cuando agrego esa línea a mi etiqueta principal, obtengo este error de IIS.
La colección de controles no se puede modificar porque el control contiene bloques de código (es decir, <% ...%>)
RESUELTO: Tomé la respuesta editada de la respuesta a continuación y la puse dentro de un elemento asp: ContentPlaceHolder
fuente
Respuestas:
Podrías usar un
ScriptManager
:<asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/jquery.js" /> </Scripts> </asp:ScriptManager>
EDITAR: Si absolutamente necesita esto en su
<head>
sección, podría hacer algo como:<head> <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>
EDITAR 2: Según los comentarios, si estás observando que
es posible que deba cambiar lo anterior para usar la sintaxis de enlace de datos:
<head> <script type="text/javascript" src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>
fuente
base href
?Pruebe en
<%#
lugar de<%=
en la página maestra debajo de la sección del encabezado<script type="text/javascript" src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>"> </script>
Luego, en Código subyacente de la página maestra en
Page_Load
EventoAhora está listo para usar jQuery y JavaScript, así como CSS, solo necesita cambiar su ruta en
ResolveUrl
qué archivo desea manejar CSS, JavaScript, jQuery.fuente
Page.Header.DataBind();
línea para que me funcionara, ¡gracias!runat="server"
atributo en lahead
etiqueta.Si no va a nosotros asp: ScriptManager o rutas absolutas, puede hacerlo así:
<script runat="server" type="text/javascript" src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>
fuente
No sé si ustedes encontraron la solución a su problema o no. Estaba enfrentando el mismo problema y volviéndome loco al descubrir por qué obtengo el error "jQuery is undefined" en los complementos que uso. Probé todas las soluciones que obtengo de Internet, pero no tuve suerte.
Pero, de repente, algo me vino a la mente: los archivos del script deberían estar en orden. Entonces, moví la referencia de jquery a la primera posición y todo comenzó a funcionar a la perfección.
Recuerden chicos, si están usando complementos con jquery, asegúrese de usar el siguiente orden de referencia de configuración a esos campos.
p.ej:
Siempre asegúrese de poner la referencia de jquery primero y luego las bibliotecas posteriores.
Espero que esto resuelva su problema, especialmente cuando lo usa con MasterPages. Es muy extraño que funcione sin importar el orden que use cuando no usa MasterPages, pero cuando lo hace, de alguna manera requiere el orden correcto.
Buena suerte y feliz codificación,
Vincent D'Souza
fuente
Mire Cómo ejecutar una raíz “/” . Esto debería solucionar todos sus problemas relacionados con las
.js
rutas de archivo sin resolver . Básicamente, reconfigura el servidor VS Dev para ejecutar su aplicación enlocalhost:port/
lugar de lalocalhost:port/application name/
resolución de nombres habitual para que funcione de la misma manera que en IIS.fuente
Para la ruta absoluta del archivo para cualquier página, utilícela a continuación:
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
fuente
<script type="text/javascript" src="/full/path/to/jquery.js"></script>
fuente
Si esta etiqueta de secuencia de comandos va directamente al navegador, es poco probable que pueda sustituir la raíz de su sitio allí. Al menos no en el servidor. Así que puedes:
fuente
También puede utilizar la etiqueta HTML <base>:
<base href="http://www.domain.com"></base>
y luego todos los enlaces en la sección de encabezado son relativos a la dirección base:
<script type="text/javascript" src="scripts/jquery.js"></script>
Suele ser útil cuando tiene varios destinos de publicación, como un servidor web de desarrollo local, un servidor de demostración, etc. Simplemente reemplace esa URL base.
fuente
base href
programáticamente?<body> <script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script> </body>
fuente