asp-append-version 在使用 @ 时呈现损坏的图像

asp-append-version renders broken image when using @

使用 Visual Studio 2015 更新 3 和 ASP.Net Core 1.1 项目。

我有以下使用 asp-append-version 的简单图像代码。

<img src="~/images/Tulips.jpg" asp-append-version="true" />

浏览器视图源代码按预期呈现,带有 ?v=version。并显示图片。

<img src="/images/Tulips.jpg?v=uTUvJWUmAhnbcvwfyJYROibIWGa2nFDTlwxNn1zOgwo" />

我现在使用 C# 代码创建一个动态图像名称@HTML.DisplayFor

<img src="~/images/Tulips_@Html.DisplayFor(modelItem => item.ProductNAME)_picture.png" asp-append-version="true" />

但是,浏览器视图源呈现 "Microsoft.AspNetCore.Mvc.ViewFeatures.StringHtmlContent" 而不是预期的图像名称 "Tulips_NAME_picture.png" 并给出损坏的图像图标。

<img src="/images/Tulips_Microsoft.AspNetCore.Mvc.ViewFeatures.StringHtmlContent_picture.png">

我可能遗漏了什么?如果能提供任何帮助,我将不胜感激。

Html.DisplayFor 不应在元素内部使用,而是用于创建它们,您应该使用的只是 @item.ProductNAME:

<img src="~/images/Tulips_@item.ProductNAME_picture.png" asp-append-version="true" />

或者,为此创建一个辅助方法:

public static string GetProductImage(Product product)
{
    return $"~/images/Tulips_{product.ProductNAME}_picture.png";
}

并像这样使用它:

<img src="@SomeClass.GetProductImage(item)" asp-append-version="true" />