ASP.NET MVC中的CSS和Javascript相对路径混淆

Edw*_*uay 22 asp.net-mvc

我的javascript路径在此页面上运行: http:// localhost:53049 /

但不在此页面上: http:// localhost:53049/Home/Messages

原因是相对路径不同,前者需要("js/...")而后者需要("../../ js/...").

我在我的Site.Master文件中包含了我的javascript:

<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>
Run Code Online (Sandbox Code Playgroud)

我如何解决这个相对路径的疯狂,即ASP.NET MVC在Site.Master中设置CSS/Javascript路径的最佳实践方式是什么,这样无论视图的URL多​​么深,它们都适用于每个视图.

附录:

似乎对于Index视图,任何路径都可以工作,奇怪的是:

<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>
Run Code Online (Sandbox Code Playgroud)

但对于任何其他页面(具有更深URL的页面),这些都不起作用.

这里发生了什么?我们如何在Site.Master中设置一次Javascript路径,它们适用于所有页面?

ADDENUM II:

事实证明只有jqgrid javascript文件(而不是jquery文件)的问题,显然在该文件中它引用其他javascript文件并且混淆:

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

Kie*_*ron 15

您还可以使用Url.Content方法调用来确保正确设置路径.

例子可以在这里找到.


Rop*_*tah 13

关于CSS文档中使用的路径:

/Content/site.css

Body {background-image:url('background.jpg');}
Run Code Online (Sandbox Code Playgroud)

CSS文档中的相对路径与CSS文档相关,而不是与显示的文档相关.

这些信息让我有些头疼.