tag page net mvc asp asp.net-mvc

page - Confusión de ruta relativa de CSS y Javascript en ASP.NET MVC



forms asp net core (5)

Intente configurar el javascript para usar una barra inclinada al principio, como "/js/jquery.jqGrid.js" Esto los configurará para usar el dominio raíz en lugar de la ruta relativa.

Mis rutas de JavaScript funcionan en esta página: http: // localhost: 53049 /

Pero no en esta página: http: // localhost: 53049 / Inicio / Mensajes

La razón es que las rutas relativas son diferentes, la primera requiere ("js / ...") y la segunda requiere ("../../ js / ...").

Incluyo mi javascript en mi archivo Site.Master:

<script type="text/javascript" src="js/jquery.jqGrid.js"></script> <script type="text/javascript" src="~/js/jquery.jqGrid.js"></script> <script type="text/javascript" src="<%= this.ResolveClientUrl("~/Scripts/jquery-1.2.6.js") %>"></script>

¿Cómo puedo evitar esta locura de ruta relativa, es decir, cuál es la mejor forma en ASP.NET MVC para establecer rutas CSS / Javascript en el Site.Master para que funcionen para cada vista sin importar qué tan profunda sea la URL de esa vista? .

APÉNDICE:

Parece que para la vista de índice, cualquier ruta funcionará, extrañamente:

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

Pero para cualquier otra página (páginas con una URL más profunda), ninguna de estas funciona.

¿Que está pasando aqui? ¿Cómo podemos establecer la ruta de JavaScript una vez en Site.Master y funcionan para todas las páginas?

ADDENUM II:

Resultó ser solo un problema con el archivo jqgrid javascript (no el archivo jquery), aparentemente dentro de ese archivo está haciendo referencia a otros archivos javascript y se confunde:

<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>


La solución para jqGrid: abra el archivo jquery.jqGrid.js y ubique la línea:

var pathtojsfiles = "js/"; // need to be ajusted

Como dice el comentario, debe editar esa ruta, por ejemplo, para una aplicación ASP.NET MVC típica,

var pathtojsfiles = "/Scripts/js/"; // need to be ajusted


En cuanto a las rutas utilizadas en los documentos CSS:

/Content/site.css

Body {background-image:url(''background.jpg'');}

Las rutas relativas en los documentos CSS están relacionadas con el documento CSS, no con el documento que se muestra.

Esta información me salvó algunos dolores de cabeza.


Necesita agregar runat="server" y especificar la ruta absoluta de esta manera:

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


También puede usar la llamada al método Url.Content para asegurarse de que las rutas estén configuradas correctamente.

Los ejemplos se pueden encontrar aquí .