它们之间有什么区别ViewState
以及它们如何工作?ControlState
IsPostBack
的实际用途是ControlState
什么?
控制状态是 ASP.NET 2.0 中的一个新结构,它实际上只不过是视图状态;但是,它是具有显着优势的视图状态;该优势是其他开发人员使用您的控件不能禁用控件状态,因为他们可以查看状态。
http://www.codeproject.com/Articles/15300/Using-Control-State-in-ASP-NET-2-0
ViewState 和 ControlState 都存储控件属性,您可以仅禁用 ViewState 属性,这不会影响在页面第一次加载时加载的 ControlState,或者如果页面是 postBack,则 controlState 已经从保存的内存中加载
既然控制状态和视图状态是一样的,那么第一个问题是,这不是重复数据吗?然后我们意识到控制状态的一个优势是它不能被禁用。然后我们可能会想为什么我们不能对 View State 做同样的事情:) 为什么要为此发明一个新的“控制状态”。现在我们有重复的数据。禁用视图状态的原因因控制状态的存在而无效,对吗?
这就是控制状态的真正优势所在。控制状态是通用的。也就是说,自定义控件可以决定在控件状态中存储什么。当视图状态不打算由控件专门存储时,它是可用的一般开箱即用功能。因为控制状态有一个特定的原因(并且它必须是可靠的),所以它不是被设计为被禁用的。
ASP.NET 2.0 版中引入的控件状态类似于视图状态,但在功能上独立于视图状态。页面开发人员可以禁用页面的视图状态或单独的性能控制。但是,不能禁用控制状态。控件状态旨在存储控件的基本数据(例如分页器控件的页码),这些数据必须在回发时可用,以使控件即使在禁用视图状态时也能正常工作。默认情况下,ASP.NET 页面框架将页面中的控件状态存储在与视图状态相同的隐藏元素中。即使视图状态被禁用,或者当使用 Session 管理状态时,控制状态也会在页面中传递到客户端并返回到服务器。在回发时,ASP。