CSS和Javascript相对路径混乱ASP.NET MVC [英] CSS and Javascript relative path confusion in ASP.NET MVC

查看:275
本文介绍了CSS和Javascript相对路径混乱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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆