我假设从单独的类库中的类访问视图状态类似于session
,application
和cache
object. 但是我检查了HttpContext
课程,发现可以进入视图状态。我正在寻找一种方法来组织我在网络应用程序中使用视图状态的方式,并且我想创建一个处理这些操作的类。
我还检查了viewstate
在 SO 中标记有标签的问题,我没有发现类似的问题。您能告诉我如何从单独的类库中访问/引用视图状态对象吗?
ViewState 属性属于 Control 类,我们总是使用 Page : Control 中的那个。
页面具有解码的视图状态。您可以通过 Base64 文本获取,HttpContext.Current.Request
但这没什么用。
您可以通过 获取对页面的引用HttpContext.CurrentHandler
,但无法访问ViewState
,因为ViewState
受到保护。
当然使用Reflection
您可以访问ViewState
,例如:
var page = HttpContext.Current.Handler as Page;
var viewStateProp = page?.GetType().GetProperty("ViewState",
BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.NonPublic);
var viewState = (StateBag)viewStateProp?.GetValue(page);