7

我正在处理一个驻留在域子目录中的 Web 应用程序,并且我试图找出将正确 URL 插入img标签的最惯用方式。虽然以下两者都在客户端计算机上生成相同的 HTML,但我不确定哪个更“正确”

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

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

这两种方法之间有什么区别(例如,一种是通过与另一种不同的机制解决的吗?),还是前者只是后者的语法糖?

4

3 回答 3

19

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

如果 Razor 检测到 ~/,它将创建与 @Url.Content 相同的输出。

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

于 2012-11-07T14:01:14.280 回答
4

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

于 2012-11-07T14:00:06.180 回答
0

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

前任。没必要。

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

需要

@ViewBag.ImagePath = "~/Content/images/blah.png";
<img src="@Url.Content(@ViewBag.ImagePath)" />
于 2018-04-19T15:18:56.530 回答