我的JavaScript路径在此页面上工作:
http://localhost:53049/
http://localhost:53049/
但不在这个页面上:
http://localhost:53049/Home/Messages
原因是相对路径不同,前者要求(“js / …”),后者需要(“../../ js / …”)。
我将我的javascript包含在我的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>
如何解决这个相对路径的疯狂,即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路径,它们适用于所有页面?
附录二:
原来只是jqgrid javascript文件(而不是jquery文件)的问题,显然是在该文件里面引用其他javascript文件并被困惑:
<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>