23

我正在使用 MVC3 并有一个简单的助手,它为状态应用程序绘制一个带有一些文本和图标的框。一个片段:

@helper Tile(string ID)
 {
 <div class="front defaulttile"> 
    <div class="notifybar" id="NotifyBarID" >
    <img alt="" src="@Url.Content("~/Images/img.jpg")" style="display: inline; margin-right: 5px;" />
    <p class="topstatusbartext" id="NotifyBarTextID" >Status bar text</p>
    </div>
etc...

将 @Url.Content 用于图像 src 会很棒,但我收到一个错误,它不可用。有什么我可以添加或更改以使用它的吗?一旦应用程序在服务器上,我宁愿不需要处理路径并遇到问题。

谢谢!

4

3 回答 3

42

好像有人问的比我好。看这个:

在 ASP.NET MVC 中,如何使用来自 C# 代码的 Razor @Url.Content() 助手?

您也可以在 MVC Helper中使用@Href ,如下所示:

src="@Href("../../Images/trend_up.png")" (whatever path is relative to the cshtml file)
-- or --
src="@Href("~/Images/trend_up.png")"

以上是针对 MVC3 的。

在 MVC4 中,你会得到这个不错的快捷方式(注意 ~):

<img id="img1" src="~/Images/trend_up.png" />

感谢 Rick Anderson、Jon Galloway 和 Eilon Lipton 的帮助。

于 2012-05-18T21:07:26.380 回答
4
    @helper Tile(string ID,UrlHelper url)
 {
 <div class="front defaulttile"> 
    <div class="notifybar" id="NotifyBarID" >
    <img alt="" src="@url.Content("~/Images/img.jpg")" style="display: inline; margin-right: 5px;" />
    <p class="topstatusbartext" id="NotifyBarTextID" >Status bar text</p>
    </div>
etc...
于 2013-02-06T01:08:46.337 回答
4

在 MVC4 中,能够再次使用波浪号绝对很有趣,如答案中所述:

src="~/Images/trend_up.png"

请记住,在您的 CSS 文件中对这些图像的引用将无法识别~- MVC4。

然而,这不是同一个问题,因为 CSS url 中对图像的相对引用。
例如background: url('../Images/menus/menu-left.png')将相对于 CSS 文件的位置。因此,如果您可以设法让 CSS 文件相对于其他应用程序文件夹保持不变,那么您就可以了...

于 2013-07-01T20:37:50.037 回答