如何在没有Control问题的情况下停用ViewState

我编写了一个ASP.NET应用程序,它在服务器的IIS7中运行。 如果我在浏览器中打开此webform并向我显示Sitecode,我会看到…

在此处输入图像描述

我有很多控件按钮,标签,文本框和ListView。 我尝试在web.config中停用ViewState但如果我停用此应用程序,则无法正常运行。 我能做什么?

仅停用不需要viewstate的控件。

要做到这一点,你需要了解viewstate是什么。

Viewstate是页面保存的位置,并记住控件的值,以便在回发后使用它们。 请记住, 视图状态在回发后使用。

所以实际上你有两次相同的数据,但只有viewstate回发以前的数据,后面的代码可以使用那些数据。

因此,主要的问题是,您需要记住哪些控件需要记住您填写的内容,或者需要记住哪些控件需要记住它们之前的状态。

让我们看一下带有EnableViewState的简单文字。

ViewState ON

 

现在,如果您在此文字上放置文本,则文本也会保存在viewstate上,而后面的代码则可以执行此操作。

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { txtLiterar.Text = "Hello There"; } } 

因此,在回复后,Literal仍然有其内容,您可以避免再次填充它,因为viewstate拥有它并自动再次填充它。

ViewState OFF

  

现在,如果您在此文字上放置文本,则文本不会保存在视图状态中,而是在后面的代码中将其添加为。

 protected void Page_Load(object sender, EventArgs e) { txtLiterar.Text = "Hello There"; } 

所以不同的是,您需要始终使用每个post上的数据填充该控件。

最需要viewstate的地方。

当您填写下拉列表时,viewstate最需要的部分。 在那里你有一个数据绑定和后面的代码需要记住在SelectValue上放置正确的值。

它也需要GridView和其他类似的控件,因为在分页数据时保留上一页和其他信息。

因此,您可以关闭大多数控件的视图状态 – 在该控件上,您可以在每个post上重新填充它们,以及不需要记住先前状态的控件。

更多内容如下:
如何优化视图状态的类
在提供页面之前确定ASP.NET页面视图状态的大小
限制关于AJAX调用的视图状态信息