У меня проблема с CKEditor, кодирующим его HTML-контент, когда состояние модели недопустимо. Например, если я отправляю «Hello World», он успешно попадает на сервер в виде закодированной строки html <p>Hello World</p>
.
Если я хочу загрузить контент, я передаю расшифрованную строку html в качестве значения текстовой области, и она прекрасно загружается <p>Hello World</p>
. Однако, если страница отправляется обратно, например, когда (!ModelState.IsValid)
, то она отображается неправильно:
<p><p>Hello World</p></p>
Вот кикер, он по-прежнему получает <p>Hello World</p>
в качестве значения поля в обратной передаче. Что дает?
Я использую следующий источник:
const ckEditorSrc = "//cdn.ckeditor.com/4.10.1/standard/ckeditor.js";
и нижний инициализатор:
CKEDITOR.replace('js-ck-editor', { htmlEncodeOutput: true});
CKEDITOR.config.height = 600;
Я проверил, и инициализатор ударил после обратной передачи.
Единственная другая информация, которая может помочь, заключается в том, что источник загружается динамически с помощью простой функции loadScript.
function loadScript(url, callback) {// loads a script onto a page
var script = document.createElement("script");
script.type = "text/javascript";
if (script.readyState) { //IE
script.onreadystatechange = function () {
if (script.readyState === "loaded" || script.readyState === "complete") {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
Вот краткая функция инициализации для краткости:
var ckEditor = function () {// init ckeditor
if ($('#js-ck-editor').length) {
const ckEditorSrc = "//cdn.ckeditor.com/4.10.1/standard/ckeditor.js";
loadScript(ckEditorSrc, function () {
CKEDITOR.replace('js-ck-editor', { htmlEncodeOutput: true});
CKEDITOR.config.height = 600;
}
}
}