【问题标题】:Get Correct HTML from Summernote form when the content has not been edited未编辑内容时从 Summernote 表单获取正确的 HTML
【发布时间】:2018-08-28 19:10:31
【问题描述】:

我正在使用此代码在我的页面上显示 Summernote 编辑器

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>bootstrap4</title>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote-lite.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote-lite.js"></script>
.
.
.
<textarea id="summernote" name="summernote">@Model.InviteEmailBody</textarea>
                <script>
                    $('#summernote').summernote({
                        tabsize: 4,
                        height: 220
                    });
                    $('#summernote').on('summernote.blur', function () {
                        $('#summernote').html($('#summernote').summernote('code'));
                    });

                    $('#summernote').html(escape($('#summernote').summernote('code')));
                </script>

然后保存到数据库

string str = Request.Form["summernote"];
string htmlEncoded = WebUtility.HtmlEncode(str);
roleToUpdate.InviteEmailBody = htmlEncoded;

当我实际编辑内容时一切都很好,但是当我不这样做时,我在 str 变量中获取的值有很多

%3Cdiv%3EHello%20

我不确定我实施 Summernote 的方式是否正确,或者我将如何解决这个问题。如果有人可以提供帮助,我将不胜感激

【问题讨论】:

    标签: javascript asp.net asp.net-core summernote razor-pages


    【解决方案1】:

    这个垃圾是由

    产生的

    $('#summernote').html(escape($('#summernote').summernote('code')));

    如果您想清理您的textarea(或预先添加一些文本),您可以使用以下语法。第二个参数是你要设置的字符串值:

    $('#summernote').summernote('code', '')
    $('#summernote').html(escape($('#summernote').summernote('code', '<b>some</b>')));
    

    【讨论】:

    • 我使用了第二个参数,但现在summernote首先显示html标签,然后再次编辑时str现在是:<div>Hello Dear User</div><div><br&gt ;</div><div><br></
    • 那是因为您正在使用 escape() 函数转义字符。不知道你为什么需要那个
    • 我的代码现在是这样 $('#summernote').html($('#summernote').summernote('code', '@Model.InviteEmailBody'));但同样的问题
    • 如何设置 Model.InviteEmailBody?
    • 我实际上已经设法通过使用 var markupStr = '@Html.Raw(Model.EmailBody)'; 解决了这个问题。 $('#summernote').summernote('code', markupStr);
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多