从类库修改ViewState

时间:2012-10-01 06:50:06

标签: c# asp.net viewstate

我假设从单独的类库中的类访问viewstate类似于sessionapplicationcache对象。但我检查了HttpContext课程,我发现要进入viewstate。我正在寻找一种方法来组织我在我的网络应用程序中使用viewstate的方式,我想创建一个处理这些操作的类。

我还检查了标有viewstate标签的问题,我发现没有类似的问题。您能否告诉我如何从单独的类库中访问/引用viewstate对象?

2 个答案:

答案 0 :(得分:1)

ViewState属性属于Control类,我们总是使用Page:Control中的一个。

Page有解码的Viewstate。您可以通过HttpContext.Current.Request获取Base64文本,但这没什么用处。

答案 1 :(得分:0)

您可以通过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);