对于ASP.NET MVC中的URL,Url.Content(“〜/ ...”)和“〜/”之间是否存在差异?

时间:2012-11-07 13:58:21

标签: asp.net asp.net-mvc asp.net-mvc-4

我正在处理一个位于域名子目录中的Web应用程序,而我正在尝试辨别在img标记中插入正确URL的最常用方法。虽然以下两者在客户端计算机上生成相同的HTML,但我不确定哪个更“正确”

  • <img src="~/Content/images/blah.png" />
  • <img src="@Url.Content("~/Content/images/blah.png")

这两个都产生/subfolder/Content/images/blah.png的绝对路径,所以两者都有效,但我很好奇哪一个是正确的做法。

这两种方法之间是否存在差异(例如,一种方法是通过与另一种方法不同的机制解决的?),还是前者只是后者的语法糖?

3 个答案:

答案 0 :(得分:16)

使用MVC4,您不再需要@Url.Content

  

如果Razor检测到〜/它会创建一个相同的输出   @ Url.Content。

http://www.beletsky.net/2012/04/new-in-aspnet-mvc4-razor-changes.html

答案 1 :(得分:4)

没有什么是“更正确”。我会使用速记,因为Razor现在支持它。

答案 2 :(得分:0)

如果要通过控制器传递字符串,则需要使用@ url.content()。 但是你直接在.cshtml中传递路径,不需要使用@ url.content()。

实施例。没必要。

<img src="@Url.Content("~/Content/images/blah.png")  />

NEED

@ViewBag.ImagePath = "~/Content/images/blah.png";
<img src="@Url.Content(@ViewBag.ImagePath)" />