【问题标题】:Disable postback of certain properties of Telerik RadEditor control禁用 Telerik RadEditor 控件的某些属性的回发
【发布时间】:2015-02-13 11:34:27
【问题描述】:

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

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

提前谢谢你。

【问题讨论】:

  • 您可以使用ASP.NET-Ajax 仅呈现部分 HTML。
  • 我们目前正在努力解决这个问题,但这并不能解决回发问题,并且会继续给服务器带来不必要的压力,因此我们希望避免这种情况。
  • 所以您有一个 RadTabStrip 并且在其中一个选项卡中您有一个 RadEditor,对吗?单击另一个选项卡通常会重定向 到一个 URL,而不是回发,因为 tabstrip 是一个导航控件。你能确认它真的是回发吗?

标签: c# asp.net telerik radeditor


【解决方案1】:

考虑使用 PageViewsContentUrl。这将允许您在 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);

【讨论】:

  • 非常感谢。我实际上是在尝试实现您正在谈论的这种机制(清除隐藏的输入,然后重新填充它)。但这没有用。我调查了一下,找到了问题的根源:我们有一个完整的 rad 编辑器(以及更多),它被包裹在一个通过 RadAjaxManager somplace 更新的 中,所以我已经解决了这个问题。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多