如何使用HttpContext
访问当前页面的ViewState我有一个我需要实现的ViewStateUtil类:
public static T GetViewState<T>(ViewStateKey viewStateKey)
{
// how to implement it?! HttpContext.Current...?
}
答案 0 :(得分:3)
private static T GetViewState<T>(string name)
{
return (T) ((BasePage)HttpContext.Current.CurrentHandler).PageViewState[name];
}
我添加了一个新的PageViewState属性,让我的所有页面都从我的BasePage继承,以显示ViewState,然后才能获取或设置它。
答案 1 :(得分:1)
如果您只需要对当前页面的ViewState进行一次快速且脏的访问,那么从新的Page类继承就很麻烦。
反思是神奇的(如果慢......当然不要大量使用这个主人!)
var pageType = typeof( Page );
var viewStatePropertyDescriptor = pageType.GetProperty( "ViewState", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic );
var currentPageViewState = (StateBag)viewStatePropertyDescriptor.GetValue( HttpContext.Current.CurrentHandler );
// Now use currentPageViewState["whatYouWant"]