在本文中http://www.devx.com/vb2themax/Tip/18714“使用EnableViewState属性提高性能”我无法看到它们将EnableViewState设置为false。他们只是做
If Not Me.IsPostBack() Then
...
DataGrid1.DataBind()
回发是否与ViewState相同?
为什么不在数据网格控件上执行EnableViewState = false?
答案 0 :(得分:0)
文章明确指出,第一个例子(你要退出的部分)通常是在启用“ViewState”的情况下完成的。由于只有第一个get-request需要将网格绑定到数据源(IF Not Me.IsPostBack()
),因为连续的回发将从已保存的ViewState恢复网格数据。
Page_Load方法的第二个示例假定在.aspx文件中禁用了ViewState,并在每次加载页面时将网格绑定到数据源。
对Me.IsPostBack
的调用仅检查表单是否通过http post访问,而ViewState是一个保存与ASP.NET服务器控件的可视表示相关的所有信息的对象。所以,不,他们不一样!
答案 1 :(得分:0)
网格控件充当许多控件的容器。每个控件都在ViewState中存储大量信息。
默认情况下,ViewState存储在隐藏控件中。这意味着它会在每个页面请求上发送到客户端。为避免此开销,可以将EnableViewState设置为false。
<asp:GridView ID="GridView1" runat="server" EnableViewState="false">
ViewState和PostBack是两个完全不相关的实体。 ViewState存储控件想要保留的任何信息。 PostBack仅指用户将信息发送回页面。
然而,ViewState对于记住用户在最后一个PostBack上输入的值也非常有用。如果您的ViewState非常大,并且您不想将其发送给用户,请考虑将其保存在会话中。您可以通过将PageStatePersister设置为SessionPageStatePersister
来完成此操作SessionPageStatePersister使用与之关联的服务器会话 用于存储数据的浏览器会话。使用session而不是 隐藏字段可以避免增加发送到的页面大小和 来自浏览器。在许多情况下,页面状态是重要的 整体标记的一部分。但是,将此数据存储在会话中 消耗宝贵的服务器资源。