首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC相对路径

ASP.NET MVC相对路径
EN

Stack Overflow用户
提问于 2008-11-25 13:27:57
回答 10查看 98.2K关注 0票数 102

在我的应用程序中,我经常需要使用相对路径。例如,当我引用JQuery时,我通常这样做:

代码语言:javascript
复制
<script type="text/javascript" src="../Scripts/jquery-1.2.6.js"></script>

现在我正在向MVC过渡,我需要考虑页面相对于根目录可能具有的不同路径。这当然是过去URL重写的一个问题,但我通过使用一致的路径设法解决了这个问题。

我知道标准的解决方案是使用绝对路径,例如:

代码语言:javascript
复制
<script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script>

但这对我不起作用,因为在开发周期中,我必须部署到一台测试机器上,应用程序将在虚拟目录中运行。根目录更改时,根目录相对路径不起作用。此外,出于维护原因,我不能简单地在部署测试期间更改所有路径-这本身就是一场噩梦。

那么最好的解决方案是什么呢?

编辑:

由于这个问题仍然在收到意见和答案,我认为更新它可能是谨慎的,以注意到从Razor V2开始,对根相对urls的支持已经包含进来,所以您可以使用

代码语言:javascript
复制
<img src="~/Content/MyImage.jpg">

不需要任何服务器端语法,视图引擎会自动用当前站点根目录替换~/。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-11-25 13:36:49

试试这个:

代码语言:javascript
复制
<script type="text/javascript" src="<%=Url.Content("~/Scripts/jquery-1.2.6.js")%>"></script>

或者使用MvcContrib并执行以下操作:

代码语言:javascript
复制
<%=Html.ScriptInclude("~/Content/Script/jquery.1.2.6.js")%>
票数 95
EN

Stack Overflow用户

发布于 2012-09-17 22:58:21

虽然这是一篇老文章,但新读者应该知道Razor2和更高版本(MVC4+中的默认版本)完全解决了这个问题。

带有剃刀1的旧MVC3:

代码语言:javascript
复制
<a href="@Url.Content("~/Home")">Application home page</a>

带有Razor2和更高版本的新MVC4:

代码语言:javascript
复制
<a href="~/Home">Application home page</a>

没有笨拙的类似Razor函数的语法。没有非标准的标记标记。

在任何HTML属性中的路径前加上一个代字号('~'),都会告诉Razor2通过替换正确的路径来“让它工作”。太棒了。

票数 53
EN

Stack Overflow用户

发布于 2008-11-25 13:35:48

在ASP.NET中,我通常使用<img src='<%= VirtualPathUtility.ToAbsolute("~/images/logo.gif") %>' alt="Our Company Logo"/>。我不明白为什么类似的解决方案不能在ASP.NET MVC中工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/317315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档