Отключить обратную передачу определенных свойств элемента управления Telerik RadEditor

У нас есть страница с Telerik RadEditor на вкладке. Бывают ситуации, когда RadEditor содержит много html и при обратной публикации для переключения вкладки все ее содержимое отправляется обратно на сервер. Это приводит к гигантской потере производительности (бывают случаи, когда обратные сообщения отправляют десятки МБ данных). Можно ли настроить RadEditor таким образом, чтобы он не отправлял свое содержимое на сервер при обратных передачах? Наш код программной части не полагается на метод доступа к свойству RadEditors Content (не считывает его содержимое явно), а только на его мутатор (его содержимое устанавливается из кода программной части элемента управления). Можно ли вообще делать такие вещи с любым из элементов управления Telerik, и если да, то как добиться такого результата?

Стоит отметить, что мы используем относительно старую версию пользовательского интерфейса Telerik (2013.2.611.35) и в данный момент не можем перейти на более новую версию.

Заранее спасибо.


person MarengoHue    schedule 13.02.2015    source источник
comment
Вы можете использовать ASP.NET-Ajax для отображения только части HTML.   -  person Tim Schmelter    schedule 13.02.2015
comment
Мы работаем над этим в данный момент, однако это не решит проблему обратной передачи и будет по-прежнему создавать ненужную нагрузку на сервер, поэтому мы хотели бы этого избежать.   -  person MarengoHue    schedule 13.02.2015
comment
Итак, у вас есть RadTabStrip, а на одной из вкладок есть RadEditor, верно? Нажатие на другую вкладку обычно приводит к перенаправлению на URL-адрес, а не к обратной передаче, поскольку полоса вкладок является элементом управления навигацией. Можете ли вы подтвердить, что это действительно постбэк?   -  person Veselin Vasilev    schedule 16.02.2015


Ответы (1)


Рассмотрите возможность использования ContentUrl для PageViews. Это позволит вам загружать отдельные страницы в iframe, чтобы они выполняли обратную передачу независимо от главной страницы. Таким образом, у вас может быть отдельная страница с редактором и отдельные страницы для других ваших вкладок.

О возможности исключить что-то из POST-запроса - я не знаю, как это сделать, так как это не должно происходить. Весь смысл в передаче текущего состояния страницы на сервер.

Другой вариант, который вы можете рассмотреть, — это использование AJAX и события beRequest PageRequestManager, чтобы попытаться очистить редактор. Я не пробовал и не знаю, получится ли на самом деле, так как такой объем данных может быть просто слишком большим для JS-движка, чтобы обработать его до начала постбэка. Вот небольшой код, иллюстрирующий эту идею:

        var currContent = null;
        function BeginRequestHandler(sender, args) {
            var editor = $find("<%=RadEditor1.ClientID%>");
            currContent = editor.get_html(true);
            editor.set_html("");
        }
        function EndRequestHandler(sender, args) {
            var editor = $find("<%=RadEditor1.ClientID%>");

            editor.set_html(currContent);
            currContent = null;
        }
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
person rdmptn    schedule 18.02.2015
comment
Большое спасибо. На самом деле я пытался реализовать этот механизм, о котором вы говорили (удаление скрытого ввода, а затем его повторное заполнение). Но это не сработало. Я немного исследовал и нашел источник проблемы: у нас был целый редактор rad (и не только), завернутый в ‹asp:Panel›, который обновлялся через RadAjaxManager где-то еще, так что я уже решил эту проблему. Спасибо, в любом случае. - person MarengoHue; 23.02.2015