Razor 在webgrid中有条件地显示图像

Razor 在webgrid中有条件地显示图像,razor,asp.net-mvc-4,webgrid,Razor,Asp.net Mvc 4,Webgrid,nemesv的代码在MVC3中运行良好 @grid.GetHtml( displayHeader: false, columns: grid.Columns( grid.Column(format: (item) => { if (item.IsMainPreview == true) { return Html.Raw(string.Format

nemesv的代码在MVC3中运行良好

@grid.GetHtml(
  displayHeader: false,
  columns: grid.Columns(
           grid.Column(format: (item) =>
             {
               if (item.IsMainPreview == true)
             {
                return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/preview-photo.gif")));
             }
@grid.GetHtml(
displayHeader:false,
列:grid.columns(
grid.Column(格式:(项)=>
{
如果(item.IsMainPreview==true)
{
返回Html.Raw(string.Format(“,Url.Content(“~/Content/images/preview photo.gif”);
}
在MVC4中,使用“~”不需要Url.Content。如果没有Url.Content(它找不到图像),我无法成功地让代码正常工作。我已经尝试过了

return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", "~/Content/images/preview-photo.gif"));
返回Html.Raw(string.Format(“,”~/Content/images/preview photo.gif”);

返回Html.Raw(string.Format(“,”~/Content/images/preview photo.gif”);
有人知道如何在没有URL.Content的情况下让它在MVC4中工作吗


谢谢,

如果没有
Url.Content

因为
~
替换只有在您的Razor模板中直接包含它时才有效(Razor在解析您的
.cshtml
并生成响应时进行此替换)

但是
grid.GetHtml
将返回呈现的html,该html将被写入响应中,而无需任何解析

您可以使用以下代码段测试它(只需复制到任何
.cshtml
):


@{
var img=“”;
}
@Html.Raw(img)
第一个图像将正确显示,因为Razor对其进行解析并进行
~
替换,但第二个图像不会正确显示,因为html只是作为字符串写入响应中,不涉及解析

return Html.Raw(string.Format("<text><img src={0} alt=\"Image\"/></text>", "~/Content/images/preview-photo.gif"));