CSS和Javascript相对路径混乱ASP.NET MVC [英] CSS and Javascript relative path confusion in ASP.NET MVC
问题描述
我的JavaScript路径此页面上的工作:
的http://本地主机:53049 /
但不是这个页面上:
的http://本地主机:53049 /主页/邮件
的原因是,相对路径是不同的,前者需要(JS / ...),而后者需要(../../ JS /...\").
我,包括我的javascript在我的Site.Master文件:
<脚本类型=文/ JavaScript的SRC =JS / jquery.jqGrid.js>< / SCRIPT>
<脚本类型=文/ JavaScript的SRC =〜/ JS / jquery.jqGrid.js>< / SCRIPT>
<脚本类型=文/ JavaScript的SRC =<%= this.ResolveClientUrl(〜/脚本/ jQuery的-1.2.6.js的)%>>< / SCRIPT>
我如何解决这个相对路径的疯狂,即什么是ASP.NET MVC的最佳实践方法设置在CSS的Site.Master / JavaScript的路径,以便他们为每个视图无论多么深刻的这一观点的网址偏偏如此。
附录:
看来,对于索引视图,任何路径将工作,奇怪的是:
<脚本类型=文/ JavaScript的SRC =/脚本/ jQuery的-1.2.6.js的>< / SCRIPT>
<脚本类型=文/ JavaScript的SRC =../../脚本/ jQuery的-1.2.6.js的>< / SCRIPT>
<脚本类型=文/ JavaScript的SRC =../../../脚本/ jQuery的-1.2.6.js的>< / SCRIPT>
但对于任何其他网页(有更深的URL的网页),没有这些工作。
这是怎么回事?我们怎样才能在设定的Site.Master JavaScript的路径,一旦他们的所有网页工作?
ADDENUM二:
原来仅是一个问题与jqGrid的JavaScript文件(不是jQuery的文件),显然这里面的文件,它引用其他JavaScript文件,它会很困惑:
<脚本类型=文/ JavaScript的SRC =<%= Url.Content(〜/ JS / jquery.jqGrid.js)%>&GT ;< / SCRIPT>
您也可以使用Url.Content方法调用,以确保路径是否正确。
例子可以发现<一个href=\"http://stackoverflow.com/questions/371591/jquery-in-an-asp-net-mvc-application-using-master-pages#371603\">here.
My javascript paths work on this page: http://localhost:53049/
But not on this page: http://localhost:53049/Home/Messages
The reason is that the relative paths are different, the former requires ("js/...") and the latter requires ("../../js/...").
I'm including my javascript in my Site.Master file:
<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>
How do I get around this relative path madness, i.e. what is the best practice way in ASP.NET MVC to set CSS/Javascript paths in the Site.Master so that they work for each view no matter how deep that view's URL happens to be.
ADDENDUM:
It seems that for the Index view, any path will work, strangely:
<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>
But for any other pages (pages with a deeper URL), none of these work.
What's going on here? How can we set the Javascript path once in Site.Master and they work for all pages?
ADDENUM II:
It turned out to only be a problem with the jqgrid javascript file (not the jquery file), apparently inside that file it is referencing other javascript files and gets confused:
<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>
You can also use the Url.Content method call to make sure that the paths are correctly set.
Examples can be found here.
这篇关于CSS和Javascript相对路径混乱ASP.NET MVC的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!