Как сохранить состояние HTML div после обратной передачи - PullRequest
0 голосов
/ 10 июля 2019

Я использую CKEditor в своем веб-приложении, например:

  <div class="editor" runat="server" EnableViewState="true">
       <div cols="10" id="editor1" name="editor1" data-sample-short contenteditable="true" runat="server" EnableViewState="true">
          TEST
       </div>
   </div>

Я хочу получить editor1.InnerText после обратной передачи, и не могу, потому что это HTML без состоянияdiv, и в то же время я не могу использовать эквивалент серверного элемента управления, потому что я уже обработал требуемые события для этого элемента управления.Как сохранить данные после обратной передачи?

1 Ответ

0 голосов
/ 13 июля 2019

Используйте скрытое текстовое поле следующим образом:

<asp:TextBox ID="tbTransfer" runat="server" TextMode="Multiline"></asp:TextBox>

В Javascript:

//Set Transfer Textbox display to none
document.getElementById('MainContent_tbTransfer').style.display = "none";

//Set Initial Source Code of CKEditor to Transfer TextBox's value
CKEDITOR.instances.editor1.setData(document.getElementById('MainContent_tbTransfer').value);

//Use this function for when you want to do the PostBack
function PostBack() {
    var temp = CKEDITOR.instances.editor1.getData();

    document.getElementById('MainContent_tbTransfer').value = temp.replace(/</g, "d123").replace(/>/g, "d321").replace(/&/g,"d111");
}

В коде:

//Getting the HTML source code of CKEditor from the Transfer Textbox and Decrypting it
string htmlToSave = tbTransfer.Text.Replace("d123", "<").Replace("d321", ">").Replace("d111", "&");

//Setting back the Transfer Textbox's text to the decrypted HTML source code
//for when the page reloads at the end of the function,
//CKEditor sets its data = Transfer Textbox's Text
tbTransfer.Text = htmlToSave;

Шифрование и дешифрование кода HTML необходимы, так как веб-браузеры распознают символы «<», «>», «&» как теги HTML и не позволят вам отправлять сообщения с простым текстом HTML внутри текстового поля.

И не забудьте изменить 'MainContent_tbTransfer', если у вашего текстового поля другой идентификатор в браузере

...