1

nemesv のコード条件付きで webgrid に画像を表示 - mvc 3は 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")));
             }

MVC4 では、"~" を使用するために Url.Content は必要ありません。Url.Content なしでコードを機能させることに成功していません (画像が見つかりません)。私が試してみました

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

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

とりわけ。URL.ContentなしでMVC4でこれを機能させる方法を知っている人はいますか?

ありがとうございました、

4

1 に答える 1

3

この場合、それなしでは機能しませんUrl.Content

~置換は、Razorテンプレートに直接ある場合にのみ機能するためです(Razorは、を解析し.cshtmlて応答を生成するときにこの置換を行います)。

ただし、grid.GetHtmlはレンダリングされたhtmlを返します。これは、Razorの解析なしで応答に書き込まれます。

次のコードスニペットでテストできます(いずれかにコピーするだけです.cshtml)。

<img src="~/Content/images/preview-photo.gif" />

@{
    var img =  "<img src=\"~/Content/images/preview-photo.gif\" />";
}

@Html.Raw(img)

最初の画像は、Razorが画像を解析して置換するため正しく表示されます~が、2番目の画像は、htmlが応答に文字列として書き込まれ、解析が含まれないため、正しく表示されません。

于 2012-12-04T21:18:51.983 に答える