Как я могу получить доступ к ViewState текущей страницы, используя HttpContext? - PullRequest
2 голосов
/ 10 июня 2011

Как получить доступ к ViewState текущей страницы с помощью HttpContext

У меня есть класс ViewStateUtil, который мне нужно реализовать:

    public static T GetViewState<T>(ViewStateKey viewStateKey)
    {
       // how to implement it?! HttpContext.Current...?
    }

Ответы [ 2 ]

3 голосов
/ 24 июня 2011
    private static T GetViewState<T>(string name)
    {
        return (T) ((BasePage)HttpContext.Current.CurrentHandler).PageViewState[name];
    }

Я добавил новое свойство PageViewState и позволил всем моим страницам наследовать от моей BasePage, чтобы открыть ViewState, а затем получить или установить его.

1 голос
/ 15 марта 2016

Меня беспокоит наследование от нового класса Page, если вам нужен только один быстрый и грязный доступ к ViewState текущей страницы.

Отражение - это магия (если медленно ... не используйте это интенсивно)Асессор, конечно!)

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"]
...