【问题标题】:What's the difference between using Url.Content and not doing so?使用 Url.Content 和不这样做有什么区别?
【发布时间】:2012-08-29 21:17:42
【问题描述】:

我正在关注 blog tutorial 将名为 FullCalendarjQuery 插件实现到 ASP.NET 项目中。

在该教程中,他们声称以下内容:

Url.Content 方法创建正确的 URL-s,它比 MS 策略(href 像 ....\Content\Site.css)更好。

但他们甚至没有试图解释他们是如何得出这个结论的。


那么这有什么区别:

<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript"></script>

还有这个:

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

【问题讨论】:

  • 这个答案stackoverflow.com/a/4414271/122005 可能对您的问题有所帮助。
  • 可以看到问题基本一样,但是没看懂答案。
  • 我相信该答案中提供的解释更接近于概述差异; Url.Content 方法确保路径在路由中始终正确。但是,对于以“~”开头的路径,它会将 url 转换为正确的应用程序相对 url,例如 可以转换为 /MyVirtualDirectory/ Scripts/SomeScript.js,如果您将 Web 应用程序部署到网站根文件夹下的虚拟目录 MyVirtualDirectory。
  • 我认为 HTML 也有相对路径的可能性,从你的 cmets 和猎人的回答来看,我认为它没有,这就是重点。

标签: asp.net-mvc


【解决方案1】:

"~/Scripts/jquery-1.4.1.js"

上面的内容不会解析为 url,因为 ~/ 对浏览器没有任何意义

"&lt;%=Url.Content("~/Scripts/jquery-1.4.1.js") %&gt;"

Url.Content会解析你应用中~/后面指定的url路径


UrlHelper.Content 方法

http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.content(v=vs.108).aspx

Converts a virtual (relative) path to an application absolute path.

【讨论】:

  • 那么没有 Url.Content 就无法实现相对路径?
  • 相对路径与动态路径不同。 “/Scripts/jquery-1.4.1.js”是一个相对路径,如果您的应用程序位于域的根目录 (mysite.com),它将起作用。但是,如果您最终以mysite.com/foo 作为应用程序根目录,那么您必须将路径更改为“/foo/Scripts/jquery-1.4.1.js”。这是 UrlHelper 派上用场的地方。它会将“~”替换为“/foo”。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多