MVC助手 - 使用@URL进行图像src?

时间:2012-05-18 00:51:25

标签: asp.net-mvc asp.net-mvc-3 html-helper

我正在使用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会很棒,但是我得到一个错误,它不可用。有什么我可以添加或更改使用它吗?一旦应用程序在服务器上,我宁愿不需要处理路径和问题。

谢谢!

3 个答案:

答案 0 :(得分:39)

看起来有人比我更好地问这个问题。看看这个:

In ASP.NET MVC how can I use the Razor @Url.Content() helper from C# code?

您也可以在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的帮助。

答案 1 :(得分: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...

答案 2 :(得分:4)

在MVC4中,能够再次使用代字号非常有趣,如答案中所述:

src="~/Images/trend_up.png"

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

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