【问题标题】:Why should I use @Url.Content("~/blah-blah-blah")?为什么我应该使用@Url.Content("~/blah-blah-blah")?
【发布时间】:2012-05-06 07:45:07
【问题描述】:

我无法理解我可以从 ASP.NET MVC 中的 Url.Content() 方法获得的好处。例如,您会看到src='@Url.Content("~/Contents/Scripts/jQuery.js")'。我为什么要使用它?使用它可能存在哪些原因?与使用像 src='/scripts/jquery.js 这样的简单旧的简单引用相比有什么好处、优势等?

更新:根据答案,我想知道除了处理虚拟文件夹之外是否还有其他使用它的原因?因为我没见过这么多使用虚拟应用程序(当然这并不意味着它没有被使用那么多)。

【问题讨论】:

  • 您从未在一个网站下拥有多个应用程序
  • 嗯,这是他们使用@Url.Content 的唯一原因吗?如果是这样,我们是否可以简单地停止在每个网站一个应用程序的解决方案上使用它?
  • 很抱歉回复晚了 - 最好将其包含在内。您永远不知道站点结构将来会如何变化。从技术上讲,如果您从不会更改其位置和每个网站的一个应用程序,而其下方没有虚拟目录等,那么请确保您可以只使用 src='/scripts/whatever.js'

标签: asp.net-mvc


【解决方案1】:

通常,您的 Web 应用程序发布为:www.yoursite.com/。 ~ 字符匹配站点的根目录 /。

但是,如果您使用虚拟目录 www.yoursite.com/mywebapp/ 发布您的网站,则 ~ 字符将匹配“/mywebapp/”。 使用“/”字符硬编码 URL 会导致错误的页面引用。

【讨论】:

    【解决方案2】:

    映射虚拟路径是唯一的目的。 如果您不需要映射它们并且确定您的应用程序或它的文件夹不会位于其他应用程序下,那么它不会为您服务。

    如果您不使用 ~ 从文档说明中,无论如何您都不会改变结果: “评论 如果指定的内容路径不以波浪号 (~) 字符开头,则此方法将原样返回 contentPath。 "

    【讨论】:

    • 感谢@AdamTupliper。然后我简单地从我的工具箱中删除这个方法;)。
    • 另请注意,在 MVC4 中,其中一些是自动处理的,例如脚本标签,您可以指定 src="~/scripts/whatever.js" 并且 razor 现在会自动为您映射它,而无需url.content的使用
    【解决方案3】:

    如果您的应用程序根路径不是服务器的根路径,这很有用。 Url.Content("~/") 返回应用程序的根文件夹。

    【讨论】:

    • 我从来没有遇到过这个问题。但是+1。
    • 根据我的经历。当您将鼠标悬停在 Visual Studio 中的链接上时,使用 ~ 不会显示任何图像内容。说找不到 [路径]。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    相关资源
    最近更新 更多