2012-03-28 2 views
1

Почему я могу получить доступ к объекту Session в методе Page_Load, например System.Web.UI.Page, но я не могу сделать это в других местах?Доступ к объекту Session

public partial class Statystyki : System.Web.UI.Page 
    { 
     // Session object not allowed here 


     protected void Page_Load (object sender, EventArgs e) 
     { 
       // but allowed here 
     } 
    } 

И не допускается в пользовательских классах. Как получить ссылку на этот объект из собственного класса?

ответ

3

Вы можете получить доступ к нему в пользовательских классах, как этот

HttpContext.Current.Session["Key"] 
+0

Причина, по которой вы можете получить к ней доступ, как «сеанс» на веб-странице, связана с тем, что страница (подкласс) обертывает ее в свойстве Session ... – TGH

+0

Приятно, мне это нужно. – zgnilec

2

Свойство Session задано после того, как объект страницы построен page lifecycle.

+0

+1 thats, что я пытался сказать –

+1

В зависимости от того, что вы имеете в виду под другими местами, вы также можете использовать HttpContext.Current.Session. – Brownman98

+0

Итак, когда мне нужно передать сессию в свой собственный конструктор классов, когда и где мне нужно сделать это без ссылки NUll в aspx-файле? Page_Init? – zgnilec

2

По своей сути ошибка вы получаете не имеет ничего общего с страницы жизненного цикла - просто инициализаторы полей не могут получить доступ к другим полей/свойства объекта, который создается.

С # Spec C - 10.5.5.2 экземпляра инициализации поля:

инициализатора переменной для поля экземпляра не может ссылаться на экземпляр создается. Таким образом, ошибка времени компиляции ссылается на в переменном инициализаторе, поскольку это ошибка времени компиляции для инициализатора переменной для ссылки на любой экземпляр элемента через простую форму . В примере класса A {int x = 1; int y = x + 1; // Ошибка, ссылка на экземпляр этого элемента} инициализатор переменной для y приводит к ошибке времени компиляции, поскольку она ссылается на элемент создаваемого экземпляра.

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