无法弄清楚 Html 编码用法

Cannot figure out Html Encoding usage

我正在开发 MVC 网络应用程序。我有一个 Razor 和 JavaScript.

的页面组合

剃须刀:

@{
    ViewBag.Title = "Edit";
    string initialImage = "<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>";
}

JavaScript:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: [@initialImage],

我想要的是:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>"],

我得到的(在源代码视图中)是:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: [&lt;img src=&#39;/Site_Data/BIO/Bio.jpg&#39; title=&#39;BIO&#39;&gt;],

我尝试了 HtmlEncode 和 HtmlDecode 的多种组合(在 Razor 和 JavaScript 部分)但无法弄清楚。 请指教。谢谢!

默认情况下 asp.net mvc 将对您的字符串进行编码。使用未编码的字符串使用 Html.Raw(string):

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["@Html.Raw(initialImage)"],

Html.Raw 在不进行任何 html 编码的情况下呈现给定的内容, 所以

@Html.Raw(initialImage);

将呈现为

<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>

在您的 js 中,您只需要使用双引号对其进行编码:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["@Html.Raw(initialImage)"],

但是,当您在其中编码字符时,例如 ViewBag.Something = "&gt;"; 原始版本是 &gt;. 要返回实际 html,您需要

Html.Raw(HttpUtility.HtmlDecode(EncodedContent));