我的 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>
我应该如何解决相对路径混乱的问题?即,在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>
但是对于任何其他页面(具有更深层次的URL的页面),这些方法都不起作用。
发生了什么?我们如何在Site.Master中一次设置Javascript路径,使其适用于所有页面?
ADDENUM II:
事实证明,这只是jqgrid javascript文件(而不是jquery文件)的问题,显然该文件内部引用了其他javascript文件并且变得混乱:
<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>