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