Estoy tratando de agregar una referencia de script a jQuery en mi página maestra para que funcione para cualquier página. En la actualidad se ve asíASP.Net Página maestra y problemas de ruta de archivos
<script type="text/javascript" src="jquery.js"></script>
El problema es que el camino es siempre relativa a la página aspx la ejecución de lo que esto sólo 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 es menos que ideal, ya que sólo funciona para las páginas que son 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>
¿Alguna idea?
EDIT: me olvidó mencionar también que el script debe estar en la etiqueta de la cabeza
La respuesta superior actual arroja una "marco del lado del cliente ASP.NET Ajax no pudo cargar" error 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 lanza un "caracteres ilegales en ruta." Excepción del compilador
EDIT 2: Cuando agrego que la línea a mi etiqueta de la cabeza me sale este error de IIS.
La colección Los controles no pueden ser modificados debido a que el control contiene bloques de código (es decir <% ...%>)
resuelto: Tomé la respuesta editada de la respuesta de abajo y lo puso dentro de una asp: ContentPlaceHolder elemento
Sí, este es un método muy recomendable en muchos libros de ASP.NET que he escrito cuando trato con rutas en las páginas maestras. – Kezzer
FYI, mi compañero de trabajo y yo probamos esto. Esto no parece funcionar en una situación de página maestra anidada * en la página maestra principal *. Sin embargo, moverlo a la página maestra de niños hizo el truco. – technomalogical
Esto funcionó para mí en casi todas mis páginas, pero para 2 páginas que explotarían con una cierta excepción: "La colección de controles no se puede modificar porque el control contiene código". La solución es cambiar el guión incluir en el encabezado de un bloque de código response.write a un evaluador de enlace de datos (es decir, cambiar <% = to <% #). Me atrevería a adivinar que es un tipo de intento por parte de MS para detener los ataques de encabezado http. Se puede encontrar una mejor explicación de esta solución fácil en: http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/ – Jagd