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

Asp.net mvc ASP.NET MVC中的CSS和Javascript相对路径混淆,asp.net-mvc,Asp.net Mvc,我的javascript路径在此页面上工作: 但不在此页上: 原因是相对路径不同,前者需要(“js/…”,后者需要(“../../js/…”) 我将javascript包含在我的Site.Master文件中: <script type="text/javascript" src="js/jquery.jqGrid.js"></script> <script type="text/javascript" src="~/js/jquery.jqGrid.js">

我的javascript路径在此页面上工作:

但不在此页上:

原因是相对路径不同,前者需要(“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有多深,它们都适用于每个视图

附录:

奇怪的是,对于索引视图,任何路径都可以工作:

<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路径,并且它们适用于所有页面

附录II:

结果证明,这只是jqgrid javascript文件(而不是jquery文件)的问题,显然在该文件中,它引用了其他javascript文件,并感到困惑:

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


尝试将javascript设置为在开头使用正斜杠,如“/js/jquery.jqGrid.js”这将设置它们使用根域而不是相对路径。

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


可以找到示例。

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

/Content/site.css

Body {background-image:url('background.jpg');}
CSS文档中的相对路径与CSS文档相关,而不是与正在显示的文档相关


这个信息让我省去了一些麻烦。

jqGrid的解决方案:打开文件jquery.jqGrid.js并找到以下行:

var pathtojsfiles = "js/"; // need to be ajusted
如评论所述,您需要编辑该路径,例如,对于典型的ASP.NET MVC应用程序

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

您需要添加
runat=“server”
,并指定如下绝对路径:


]

我们看不到从您的本地主机上发布的内容。tres LOL-甚至没有注意到我知道(希望)您在我的本地机器上看不到它们,我只是不知道如何使用此编辑器创建http的非链接。关键是,如果URL中有目录,则路径不起作用。索引视图的优点是,在您移动到另一个操作之前,所有内容都可以正常工作。当然,只有当文件确实位于站点根以外的位置时,这才起作用。例如,在虚拟目录中开发但在根目录中部署会导致此方法在开发过程中失败。在虚拟目录/应用程序中本地运行时,URL将为/MyApp/Scripts/js/。有什么建议吗?我不想把js文件变成一个视图,这样我就可以使用URL.Content,而且我也不太热衷于依赖对lmhosts等的更改。有其他选择吗?简短回答:我改用了slickgrid,它没有这个问题。