新的 ControlState 功能是仅适用于自定义控件还是也适用于标准服务器控件?
也就是说..您可以使用 Detailsview、Gridview 等标准控件禁用整个页面的 ViewState 并且它仍然可以工作吗?ControlState 是否适用于标准服务器控件?
或者为了将 ControlState 用于标准服务器控件,您必须通过创建新的自定义 GridView/DetailsView 来修改它们的行为?
来自微软文档。
仅对对于跨回发进行控制至关重要的少量关键数据使用控制状态。不要使用控制状态来替代视图状态。
从这里你可以猜到 GridView 和其他项目不会在 ControlState 中存储大量信息,所以我猜如果你想这样做,违反微软的建议,你必须扩展基本控件来做它。
您可以禁用所有页面的视图状态,但您需要在每次回发中重新绑定 datagrid、dataview。
有时它比在客户端上保存一个巨大的视图状态效果更好。
对于标准服务器控件:如果您在初始化后修改控件属性,那么所有修改也将保存在 ViewState 中。