【发布时间】:2015-11-19 12:48:39
【问题描述】:
ViewState 和 ControlState 在 IsPostBack 方面的区别以及它们的工作原理是什么?
ControlState的实际用途是什么?
【问题讨论】:
标签: asp.net
ViewState 和 ControlState 在 IsPostBack 方面的区别以及它们的工作原理是什么?
ControlState的实际用途是什么?
【问题讨论】:
标签: asp.net
控件状态是 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 做同样的事情:) 为什么要为此发明一个新的“控制状态”。现在我们有重复的数据。禁用 View State 的原因会因 Control 状态的存在而无效,对吧?
这就是控制状态的真正优势所在。控制状态是通用的。也就是说,自定义控件可以决定在控件状态中存储什么。当视图状态不打算由控件专门存储时,它是可用的一般开箱即用功能。因为控制状态有一个特定的原因(并且它必须是可靠的),所以它不是被设计为禁用的。
【讨论】:
在 ASP.NET 2.0 版中引入的控件状态类似于视图状态,但在功能上独立于视图状态。页面开发人员可以禁用页面的视图状态或单独的性能控制。但是,不能禁用控制状态。控件状态旨在存储控件的基本数据(例如分页器控件的页码),这些数据必须在回发时可用,以使控件即使在禁用视图状态时也能正常工作。默认情况下,ASP.NET 页面框架将控件状态存储在页面中存储视图状态的同一隐藏元素中。即使视图状态被禁用,或者当使用 Session 管理状态时,控制状态也会在页面中传递到客户端并返回到服务器。在回发时,ASP.NET 对隐藏元素的内容进行反序列化,并将控件状态加载到为控件状态注册的每个控件中。
【讨论】: