禁用 Telerik RadEditor 控件的某些属性的回发
Disable postback of certain properties of Telerik RadEditor control
我们在标签条上有一个带有 Telerik RadEditor 的页面。在某些情况下,RadEditor 包含很多 html 并且在执行 post 返回以切换选项卡时,其所有内容都被 post 返回到服务器。这会导致巨大的性能损失(有时 post 后端会发送数十 MiB 的数据)。
是否可以通过 postbacks 不将其内容发送到服务器的方式调整 RadEditor?我们的代码隐藏不依赖于 RadEditors Content 属性 访问器(不显式读取其内容),仅依赖其修改器(其内容从控件的代码隐藏内设置)。
甚至可以使用任何 Telerik 控件来做这样的事情吗?如果可以,那么我们如何实现这样的结果?
值得指出的是,我们使用的Telerik UI版本比较老(2013.2.611.35),目前无法切换到较新的版本。
提前致谢。
考虑使用 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);
我们在标签条上有一个带有 Telerik RadEditor 的页面。在某些情况下,RadEditor 包含很多 html 并且在执行 post 返回以切换选项卡时,其所有内容都被 post 返回到服务器。这会导致巨大的性能损失(有时 post 后端会发送数十 MiB 的数据)。 是否可以通过 postbacks 不将其内容发送到服务器的方式调整 RadEditor?我们的代码隐藏不依赖于 RadEditors Content 属性 访问器(不显式读取其内容),仅依赖其修改器(其内容从控件的代码隐藏内设置)。 甚至可以使用任何 Telerik 控件来做这样的事情吗?如果可以,那么我们如何实现这样的结果?
值得指出的是,我们使用的Telerik UI版本比较老(2013.2.611.35),目前无法切换到较新的版本。
提前致谢。
考虑使用 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);