为什么 Jquery 在我不想要的时候呈现为 HTMLString?

Why Jquery renders as HTMLString when I don't want it?

所以,我正在尝试粘贴图像 URL,我了解到问题是后端正在正确返回图像 url,但由于某些原因,razor 渲染了它as HtmlString(我的问题是图片路径上有“&”,razor 将其替换为 "&"

以此为例(不是取图url,只是想了解一下问题):

@functions
{
    private String GetPictureSrc()
    {
       return "&&&&";
    }
}

然后在 javascript 部分:

        $("#anImage").attr("src", "@GetPictureSrc()");

当我看到生成的代码时,我看到了这个:

<img id="anImage" src="&amp;amp;&amp;amp;&amp;amp;&amp;amp;">

我想看看函数到底返回了什么!

<img id="anImage" src="&&&&">

编辑: 另外,我刚刚发现问题出在Jquery,而不是剃须刀,如果我这样尝试,它可以正常工作,但不幸的是这不是我需要的......

<img id="anImage" src="@GetPictureSrc()">

如何告诉 jquery 不要对字符串进行 HtmlFy?

提前致谢!

您得到的是 &amp; 而不是 &,因为 razor 是 HTML 编码您的 c# 表达式的结果(调用您的 GetPictureSrc 方法,returns一个字符串)。

如果您不想进行编码,请使用 Html.Raw 方法。

$("#anImage").attr("src", "@Html.Raw(GetPictureSrc())");

这将为您提供未 HTML 编码的值。