asp.net javascript jquery runatserver

ASP.Net Página maestra y problemas de ruta de archivo



javascript jquery (10)

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 es siempre relativa a la página ejecutable aspx, por lo que esto solo funcionará si el archivo "jquery.js" está ubicado en la misma carpeta. Para que funcione, tengo que cambiar la línea a:

<script type="text/javascript" src="../../jquery.js"></script>

Obviamente, esto es menos que ideal, ya que solo funcionará para páginas con dos niveles de profundidad desde la carpeta raíz. Si intento lo siguiente, IIS arroja un error sobre un carácter inesperado.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

¿Algunas ideas?

EDITAR: Olvidé mencionar también que la secuencia de comandos DEBE estar en la etiqueta de la cabeza

La respuesta superior actual arroja un error "No se pudo cargar el marco del lado del cliente ASP.NET Ajax. " Cuando lo agrego a mi página maestra. Está lanzado desde JavaScript y no desde el compilador .Net. Si muevo el ScriptManager a la sección principal donde debería estar, obtengo un error de compilación sobre el scriptManager que necesita estar dentro de una etiqueta de formulario.

La tercera respuesta arroja una excepción de " Caracteres ilegales en el camino " del compilador

EDIT 2: Cuando agrego esa línea a mi etiqueta principal obtengo este error de IIS.

La colección Controls 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


Mira cómo ejecutar una raíz "/" . Esto debería solucionar todos sus problemas con respecto a las rutas de archivos .js no resueltas. Básicamente, reconfigure el servidor VS Dev para ejecutar su aplicación como localhost:port/ diferencia del localhost:port/application name/ resolución de nombre que funciona de la misma manera que lo hace en IIS.


No sé si ustedes encontraron la solución a su problema o no. Me enfrentaba al mismo problema y me volví loco al descubrir por qué obtengo el error "jQuery no está definido" en los complementos que uso. Probé todas las soluciones que recibí de internet, pero no hubo suerte en absoluto.

Pero, de repente, algo salpicó en mi mente que los archivos de script deberían estar en orden. Entonces, moví el referendo de jquery al primer puesto y todo comenzó a funcionar como encanto.

Recuerda chicos, si estás usando plugins con jquery, asegúrate de usar el siguiente orden de configuración de referencia de esos campos.

  1. referencia a la biblioteca jquery
  2. referencia a las otras bibliotecas de complementos posteriores y así sucesivamente ...

p.ej:

  1. "script src =" js / jquery-1.3.2.min.js "type =" text / javascript "...
  2. "script src =" js / jqDnR.min.js "type =" text / javascript "...
  3. "script src =" js / jquery.jqpopup.min.js "type =" text / javascript "...
  4. "script src =" js / jquery.bgiframe.min.js "type =" text / javascript "...

Siempre asegúrese de poner primero la referencia jquery y luego las bibliotecas posteriores.

Espero, esto resuelve tu problema especialmente cuando lo usas con MasterPages. Es muy extraño que funcione sin importar el orden que uses cuando no uses MasterPages, pero cuando lo haces, entonces de alguna manera requiere el orden correcto.

Buena suerte y feliz codificación

Vincent D''Souza


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>


Pruebe <%# lugar de <%= en la página maestra debajo de la sección principal

<script type="text/javascript" src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>"> </script>

Luego, en el código detrás de la página Page_Load evento Page_Load

Page.Header.DataBind();

Ahora eres bueno para ir con jQuery y JavaScript, así como con CSS, solo tienes que cambiar tu ruta en ResolveUrl en qué archivo quieres manejar CSS, JavaScript, jQuery.


Puede usar un ScriptManager :

<asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/jquery.js" /> </Scripts> </asp:ScriptManager>

EDITAR: Si necesitas esto en tu sección <head> , podrías hacer algo como:

<head> <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>

EDIT 2: De acuerdo con los comentarios, si estás observando eso

La colección Controls no se puede modificar porque el control contiene bloques de código (es decir, <% ...%>)

Es posible que necesite cambiar lo anterior para usar la sintaxis de enlace de datos:

<head> <script type="text/javascript" src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>


Si esta etiqueta de script 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:

  1. Implemente el sitio en la raíz del nombre de dominio y use rutas absolutas (la solución más simple).
  2. Inserta este enlace con el control del servidor.
  3. Preprocesa el HTML resultante antes de enviarlo al cliente (con HttpResponse.Filter).

Si no nos va a utilizar asp: ScriptManager o rutas absolutas, puede hacerlo así:

<script runat="server" type="text/javascript" src=''<%= Page.ResolveUrl("~/jquery.js") %>''></script>


También puede usar la etiqueta <base> HTML:

<base href="http://www.domain.com"></base>

y luego todos los enlaces en la sección del encabezado son relativos a la dirección base:

<script type="text/javascript" src="scripts/jquery.js"></script>

A menudo es útil cuando tienes múltiples destinos de publicación, como servidor web local de desarrollo, servidor de demostración, etc. Simplemente reemplazas esa URL base.


<body> <script language="javascript" src=''<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>'' type="text/javascript"></script> </body>


<script type="text/javascript" src="/full/path/to/jquery.js"></script>