【问题标题】:html.TextAreaFor and HtmlDecodehtml.TextAreaFor 和 HtmlDecode
【发布时间】:2021-12-06 17:35:34
【问题描述】:

问题很简单,我在模板中有这行代码:

@Html.TextAreaFor(m => m.AnswerText, new { @class="Textarea", placeholder=Model.QuestionPlaceholder })

问题是有时候AnswerText会包含&这样的特殊字符,所以我尝试了以下方法:

@{var text = HttpUtility.HtmlDecode(Model.AnswerText); }
@Html.TextAreaFor(m => text, new { @class="Textarea", placeholder=Model.QuestionPlaceholder })

现在的问题是我可以正确看到文本,但它没有保存。

我也尝试了以下方法:

@Html.TextAreaFor(m => HttpUtility.HtmlDecode(m.AnswerText), new { @class="Textarea", placeholder=Model.QuestionPlaceholder })

但我收到以下错误:

更新:我尝试了以下方法:

<div class="InputField">
    @Html.TextAreaFor(m => m.AnswerText)
</div>

但是当我尝试保存 & 然后返回页面查看时,我看到了 &

你是怎么做到的?它是 Blazor、Razor、MVC,在 InputField 中

【问题讨论】:

  • 为什么会有 [blazor] 标签?它看起来像 juist razor-pages。清楚你正在使用的平台。
  • 我正在使用 Blazor,但这是在 Razor 页面的模板中
  • Razor 页面还是 .razor 文件? Blazor 不是 MVC,你还不清楚。
  • 是.cshtml,混合c#,html标签,

标签: asp.net-mvc model-view-controller razor


【解决方案1】:

我不喜欢我如何解决它,但它确实有效。可能有更好的方法:

    @Html.TextAreaFor(m => m.AnswerText, new { @class = "Textarea " + Model.ID, placeholder = Model.QuestionPlaceholder })
    <script>
        var elements = document.getElementsByClassName("Textarea " + @Model.ID)[0];
        elements.value = unescapeHtml(elements.value);
        function unescapeHtml(value) {
            return String(value)
                .replace(/&amp;/g, '&')...;

        }</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2011-08-19
    • 2015-03-24
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多