Как заставить TinyMCE работать внутри UpdatePanel? - PullRequest
14 голосов
/ 13 февраля 2009

Я пытаюсь сделать то, что многие люди, похоже, смогли сделать, но я не могу реализовать какое-либо решение. Элемент управления TinyMCE работает довольно хорошо в форме asp.net, пока вы не заключите его в элемент UpdatePanel, который затем прерывается после обратной передачи. Я пробовал некоторые исправления, такие как метод RegisterClientScriptBlock, но все еще безуспешно, я теряю элемент управления tinyMCE после обратной передачи.

Ниже представлен полный тестовый проект (VS 2008), снабженный элементом управления снаружи UpdatePanel и одним внутренним элементом, на каждом из которых имеется кнопка для создания обратной передачи. Также в проекте у меня есть элемент управления EditorTest, который включает закомментированный код некоторых вызовов, которые я пробовал, на случай, если кто-нибудь даст какие-либо идеи.

ОБРАЗЕЦ КОДА

Вот несколько источников для некоторых решений на форуме MCE:
AJAX
UpdatePanel

Ответы [ 12 ]

0 голосов
/ 16 февраля 2009

TinyMCE (как и другие редакторы WYSIWYG, FCKEditor и т. Д.) Страдает от проблем с проверкой обратной передачи. По умолчанию на любой странице ASP.Net при обратной передаче проверяется ее содержимое, а любой незашифрованный HTML-код выдает ошибку проверки обратной передачи.

Сейчас многие люди, в том числе на этих форумах, предлагают отключить проверку обратной передачи validaterequest = "false", но это делает вас уязвимыми для атак с использованием сценариев. Лучше всего связать функцию с событием асинхронной обратной передачи, которое срабатывает просто перед асинхронной обратной передачей. Эта функция JavaScript должна HTML кодировать данные TinyMCE, отправляемые обратно на сервер, затем она пройдет проверку обратной передачи, и вы будете в порядке.

Я полагаю, что TinyMCE и другие редакторы правильно делают это на обратных передачах, но не на асинхронных обратных передачах, поэтому проблема заключается в том, что если вы посмотрите на источник TinyMCE, вы, вероятно, сможете найти их функцию, которая делает это, и просто добавить привязку к событию.

Надеюсь, это поможет

0 голосов
/ 13 февраля 2009
...