2010-06-16 1 views
3

Я хочу расширить класс System.Web.UI.Page с некоторыми дополнительными материалами. В ctor мне нужно значение переменной session.Сессия имеет значение null при наследовании от System.Web.UI.Page

Проблема заключается в том, что Session-объект является недействительным ...

public class ExtendedPage : System.Web.UI.Page { 
    protected foo; 

    public ExtendedPage() { 
     this.foo = (int)HttpContext.Current.Session["foo"]; // NullReferenceException 
    } 
}

Если переместить часть с сеансового объекта в все нагрузки Event работает отлично ...

public class ExtendedPage : System.Web.UI.Page { 
    protected foo; 

    public ExtendedPage() { 
     this.Load += new EventHandler(ExtendedPage_Load); 
    } 

    void ExtendedPage_Load(object sender, EventArgs e) { 
     this.foo = (int)HttpContext.Current.Session["foo"]; 
    } 
}

Почему Session-объект null в первом случае ??

ответ

5

Недвижимость Session устанавливается позднее в Page lifecycle, после того как объект Page построен.

+0

Вы имеете в виду, что он не установлен на строительстве, но поставил перед загрузкой страницы? (Я думаю, в pre-init.) –

+1

@Steven: Точно. – SLaks

0

Вы должны наследовать класс ExtendedPage на странице .aspx.

Это будет сеанс при запуске в HttpContext

+0

Если событие 'Load' запускается, он уже делает это. – SLaks

Смежные вопросы