我在加载表单时遇到问题。在 IE8 中加载大约需要 15 秒。有什么方法可以显示前 50 个控件并在后台加载另一个控件,以便用户可以访问前 50 个控件,这些控件已加载,而其余的控件正在加载到屏幕上,有人可以帮我吗?
谢谢, 苏拉杰
我在加载表单时遇到问题。在 IE8 中加载大约需要 15 秒。有什么方法可以显示前 50 个控件并在后台加载另一个控件,以便用户可以访问前 50 个控件,这些控件已加载,而其余的控件正在加载到屏幕上,有人可以帮我吗?
谢谢, 苏拉杰
要发送页面的一部分,您可以使用页面Flush()
内部的某些位置,例如:
...html code...
<%Response.Flush();%>
...rest of html code...
但是如果延迟是在代码后面,例如在查询您的数据库时,那么刷新在此时无济于事,您还需要在flush()
例如之后移动一些计算(如果可能的话):
...html code...
<%
Response.Flush();
// Call CodeBehind Function that takes some time
MoreCalculations();
%>
...rest of html code...
那是大量的控件。
您的主要问题将是ViewState
. 看看你的页面大小。这将是几 MB。不是一个好的网络设计。
您可以采取的步骤:
重新设计您的页面以使用更少的控件。您可以使用会话来维护值并将输入表单分解为几个较小的表单。
您可以将其ViewState
移至会话中。这会给你一些安慰。SessionPageStatePersister
为此使用。
将隐藏控件设置为Visible="False"
。通过 CSS 或 javascript 隐藏的控件仍然会占用带宽。将控制设置为Visible="False"
告诉服务器不要渲染它们。这样做的缺点是,如果需要显示它们,则必须回发到服务器。
对于不会在您的页面生命周期内更改的控件,请将ViewStateMode="Disabled"
. 这将确保他们不会将其内容写入 ViewState。