2015-01-17 5 views
0

I`m сделать хороший сайт ASP.NET, где я сохранить детали пользователя на сессии при входе в систему следующим образом:ASP.NET Session [] параметр не работает от Page_Load()

protected void Login_Click(object sender, EventArgs e) 
{ 
    //If details at the user/password textboxes are legit: 
    Session["User"] = new User(LoginUserTB.Text, LoginPassTB.Text, null, Class.UNDEF); 
} 

Это работает очень хорошо. Например, у меня есть ярлык с именем Приветственный тег, которому предлагается перейти на приветствие, включая имя пользователя, если пользователь будет сохранен в сеансе. Я запрограммировал его так, и он работает.

загрузки страницы:

if(Session["User"]!=null) 
    WelcomeTag.Text = "Welcome, " + ((User)Session["User"]).Username + "."; 

Однако, по некоторым причинам, он не работает должным образом на одной из этикеток. Это ярлык главной страницы с именем StatusDesc, который должен включать дату на сервере и имя пользователя, если таковой имеется. На странице, у меня есть следующий код:

if (Session["User"] != null) 
{ 
    ((Label)Master.FindControl("StatusDesc")).Text = "Currently logged to: " + ((User)Session["User"]).Username + ".<br>" + ((Label)Master.FindControl("StatusDesc")).Text; 
} 

Он работал раньше, и i`m наверняка об имени компонента мастер страницы - я не изменить его в то же время; Однако теперь, даже если я зарегистрирован, он просто не покажет строку Username - только строку даты, которую он показывает, даже если в сеансе нет пользователя.

Любая идея, почему такое происходит? если вам нужно предоставить другие разделы кода, просто спросите.

спасибо, что заблаговременно!

+1

вводит 'if (Session [" User "]! = Null)' block? – Banana

+0

Есть ли у вас реализация обновления сеанса? – Dhanuka777

+0

Примечания: У меня нет возможности для обновления сеанса. Я также заметил, что на первой странице, которую вы видите после входа в систему, вы можете увидеть часть «Пользователь» в статусе, но после этого вы не можете. –

ответ

4

Вы должны понять события тех уволят в последовательности Симметричного, чтобы установить значения для управления

http://msdn.microsoft.com/en-us/library/dct97kc3%28v=vs.140%29.aspx

Image Из MSDN (http://i.msdn.microsoft.com/dynimg/IC386473.png) ASP.Net Page Life Cycle (Image From MSDN) http://i.msdn.microsoft.com/dynimg/IC386473.png

(Изображение из CodeProject) ASP.Net Page Life Cycle With Master Page

+3

Это не отвечает на вопрос. Вы просто говорите: «Вам нужно понять события, которые запускаются последовательно, чтобы установить значения для управления ». Итак ... что-то не так? –

+3

Sangram, +1 для диаграммы. Замечательно. Но я сомневаюсь, ответил ли этот вопрос на вопрос – naveen

+0

@PatrickHofman У меня не было привилегии добавлять комментарий до момента, когда я опубликовал ответ. Моя точка зрения заключалась в том, чтобы понять, почему значения элементов управления теряются, нужно понять цель и последовательность события, которые выполняются, например, например Установка значений элементов управления Событие Init - это всякая неправильная идея – Sangram