如何在剃刀文件的IF语句中使用@ Url.Content?

时间:2012-08-17 12:53:54

标签: html image razor asp.net-mvc-4

我有一个mvc 4项目,我正在使用如下所示的图像引用:

<img alt="Progress Update" class="projectListNotificationIcon" src="@Url.Content("~/Images/progressUpdateIcon.png")"/>

@ Url.Content是必要的,它可以同时处理此项目的本地副本以及实时服务器副本。这很好用,但我有另一个地方,我在两个不同的图像之间进行选择,而且代码看起来像这样:

var imagePath = (item.IsOverdue) ? "../../Images/lateIcon.png" : "../../Images/onTimeIcon.png";

如何在上面的if语句中使用@ Url.Content的一些排列?我正在做的当前方式在本地项目中工作,但不在服务器上工作。

2 个答案:

答案 0 :(得分:3)

尝试:

<img src="@((item.IsOverdue) ? Url.Content("~/path/img1.jpg") : Url.Content("~/path/img2.jpg"))" alt="whatever" />

使用波浪号(〜)符号可能是关键,因为它会解析相对于站点根目录的URL。

答案 1 :(得分:0)

<img src="@(item.IsOverdue ? "~/path/img1.jpg" : "~/path/img2.jpg")"  />

使用以~符号开头的asp.net mvc 4网址会自动转换为网站相对路径。在此处阅读http://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2