禁用Telerik RadEditor控件的某些属性的回发

时间:2015-02-13 11:34:28

标签: c# asp.net telerik radeditor

我们在标签条上有一个Telerik RadEditor页面。有些情况下,RadEditor包含大量的html,并且在回帖以切换选项卡时,其所有内容都将回发到服务器。这导致巨大的性能损失(有时候回发发送数十个MiB数据)。 是否有可能以这样的方式调整RadEditor,使其在回发时不将其内容发送到服务器?我们的代码隐藏不依赖于RadEditors Content属性访问器(不显式读取其内容),只依赖于其mutator(其内容是从控件的代码隐藏中设置的)。 甚至可以使用任何Telerik控件执行此类操作,如果是,那么我们如何实现这样的结果呢?

值得指出的是,我们使用相对较旧的Telerik UI版本(2013.2.611.35),目前我们无法切换到更新的版本。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

考虑使用 PageViews ContentUrl 。这样您就可以在iframe中加载单独的页面,这样它们就可以独立于主页面进行回发。因此,您可以拥有一个包含编辑器的独立页面和其他选项卡的独立页面。

关于从POST请求中排除某些内容的可能性 - 我不知道如何做到这一点,因为它不应该发生。重点是将当前页面状态传输到服务器。

您可以考虑的另一个选项是使用AJAX和PageRequestManager的beingRequest事件来尝试删除编辑器。我没有尝试过,我不知道它是否会真正解决,因为在回发开始之前,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);