仅停用不需要视图状态的控件。
为此,您需要了解视图状态是什么。
Viewstate 是页面保存并记住控件值的地方,以便在回发后拥有它们。请记住,在回发后使用视图状态。
所以实际上你有两次相同的数据,但只有视图状态是回发以前的数据,后面的代码可以使用该数据。
所以主要问题是,您需要哪些控件来记住您填写的内容,或者需要哪些控件来记住它们之前的状态。
让我们看一个启用和禁用 EnableViewState 的简单 Literal。
ViewState 开启
<asp:Literal runat="server" EnableViewState="true" ID="txtLiterar">
现在,如果您在此文字上放置文本,则该文本也会保存在视图状态中,并且您可以在后面的代码中执行此操作。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtLiterar.Text = "Hello There";
}
}
所以在回帖后Literal仍然有它的内容,你可以避免再次填充它,因为viewstate有它并自动再次填充它。
视图状态关闭
<asp:Literal runat="server" EnableViewState="false" ID="txtLiterar">
现在,如果您在此文字上放置文本,则该文本不会保存在视图状态和您将其添加为的代码中。
protected void Page_Load(object sender, EventArgs e)
{
txtLiterar.Text = "Hello There";
}
因此不同的是,您需要始终用每个帖子的数据填充该控件。
最需要视图状态的地方。
视图状态中最需要的部分是填写下拉列表时。那里有一个数据绑定,后面的代码需要记住要放置在 SelectValue 上的正确值。
GridView 和其他类似的控件也需要它,因为在分页数据时保留上一页和其他信息。
因此,您可以关闭大多数控件的视图状态 - 在这些控件上,您可以在每次回帖时再次填充它们,以及在不需要记住先前状态的控件上。
更多阅读:
How to optimize class for viewstate
Determine size of ASP.NET page's viewstate before serving page
Limiting view state information on AJAX calls