C# 如何清除Viewstate?

C# 如何清除Viewstate?,c#,.net,asp.net,C#,.net,Asp.net,我遇到一个问题,两个以编程方式添加的控件试图加载彼此的viewstate,我想在加载控件之前清除viewstate,我尝试了viewstate。清除,但没有任何效果,当我在控件的容器上禁用viewstate时,一切正常,只是没有保留控件的状态。是否有办法仅清除特定控件的viewstate?假设两个控件都继承自。通过将其设置为false,可以禁用其各个ViewState。您还可以清除它们的ViewState,因为每个控件都有一个属性。确保以编程方式添加的两个控件的id不同,并且ViewState问

我遇到一个问题,两个以编程方式添加的控件试图加载彼此的viewstate,我想在加载控件之前清除viewstate,我尝试了viewstate。清除,但没有任何效果,当我在控件的容器上禁用viewstate时,一切正常,只是没有保留控件的状态。是否有办法仅清除特定控件的viewstate?

假设两个控件都继承自。通过将其设置为false,可以禁用其各个ViewState。您还可以清除它们的ViewState,因为每个控件都有一个属性。

确保以编程方式添加的两个控件的id不同,并且ViewState问题应该消失。

您可以在特定控件上禁用ViewState:

EnableViewState="False"

根据您的描述,您在加载动态控件时似乎犯了一个常见的错误—要么加载太晚,要么没有为它们分配唯一的id(并且每次回发时都为它们分配相同的唯一id)

如果这确实是您的问题,那么清除viewstate不是要采取的适当操作。修复、检查这三个链接非常简单:

是的

string controlName = "name of control";
ViewState[controlName] = null;
// create control, add it to the page

如果ViewState妨碍了您,而您还没有这样做,请阅读


这将使您在使用ViewState和整个ASP.NET页面生命周期时更加自如。

问题是,在SaveViewState事件调用Render之前,ViewState保存在页面生命周期中,他必须重载页面的呈现方法。任何其他事件都会导致它仍然存在。@Nissan:你的意思是如果他清除ViewState属性而不是禁用ViewState?是的。如果他禁用它,那很好。。。不需要澄清。但是如果他只是想清除它,他就必须在渲染事件中进行。否则,他会清除它。。。但即使在渲染之前,也是SaveViewState。。。作为一个插件:确保尽早创建控件,而不是在
Page\u Load
之后<代码>页面初始化是首选,但
页面加载
事件将起作用
Page_PreRender
将不会在某些事件上添加我的用户控件。用户控件包含为用户显示的模式。加载页面上的所有用户控件不是一个选项,因为每个控件都是重载的,在实际知道用户需要之前,不需要获取所有数据。我理解答案,但必须有解决方案来清除像我这样的情况下的viewstate?@Nurp您应该问一个新问题,其中包含您特定情况的详细信息。@slugster我最终还是重新加载了相同的用户控件(相同的viewstate)。这似乎是正确的做法。。