2013-06-20 3 views
0

Я кодирую сайт, на котором пользователь может войти в свою учетную запись.ASP.NET - странная ошибка при перенаправлении страницы

После входа в учетную запись пользователь может изменить свой секретный вопрос или ответ. Для этого он должен пройти три страницы:

1) Первая страница запрашивает у пользователя пароль, даже если он уже зарегистрирован. Сеанс под названием Edit_Secret_1 создан с содержанием Успех, если данный пароль принимается.

2) Когда вторая страница загружается, она проверяет содержимое сеанса Edit_Secret_1. Если они равны нулю, это означает, что пользователь перешел на страницу через адресную строку, он перенаправляется на страницу AccountManagement. В противном случае для сеанса Edit_Secret_1 установлено значение null. Это делается для того, чтобы пользователь не мог снова получить доступ к странице через адресную строку после того, как он изменил секретный вопрос/ответ один раз в сеансе.

3) На третьей странице представлено простое подтверждающее сообщение. Я еще этого не делал.

Это скриншот второй странице:

enter image description here

Теперь секретный вопрос и ответ на секретный вопрос поля пусты, так как я не закодированы ту часть, где я извлечения данных из базы данных.

Для того, чтобы проверить кнопки, я закодировал Сохранить изменения кнопку для перенаправления HomePage.aspx, а Отмена кнопку следует переориентировать на ContactUs.aspx. Теперь, когда я нажимаю одну из двух кнопок, меня перенаправляют на AccountManagement.aspx. Я знаю, что проблема связана с установкой Session в null, но я понятия не имею, как ее решить. Может кто-нибудь помочь, пожалуйста?

Вот код:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Label_Error.Visible = false; 

    if (Session["Username"] == null) 
    { 
     Response.Redirect("HomePage.aspx"); 
    } 

    else 
    { 
     if (Session["Edit_Secret_1"] == null) 
     { 
      Response.Redirect("AccountManagement.aspx"); 
     } 

     else 
     { 
      Session["Edit_Secret_1"] = null; 
     } 
    } 
} 

protected void Cancel_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("ContactUs.aspx"); 
} 

protected void Button_SaveChanges_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("HomePage.aspx"); 
} 

ответ

2

Если поставить точки останова в вашем Page_Load, Cancel_Click и методы Button_SaveChanges_Click и отладки, что я верю, что вы найдете ваш Page_Load стреляет и вызывая редирект из-за код в этом методе.

Вы, вероятно, необходимо добавить проверку, чтобы определить, что это не постбэк - вот так:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
      //current Page_Load code in here... 
    } 
} 
+0

Спасибо вам большое :) Это отлично работает :) – Matthew

2

Попробуйте поставить IsPostBack по методу page_load

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 

    Label_Error.Visible = false; 

    if (Session["Username"] == null) 
    { 
     Response.Redirect("HomePage.aspx"); 
    } 

    else 
    { 
     if (Session["Edit_Secret_1"] == null) 
     { 
      Response.Redirect("AccountManagement.aspx"); 
     } 

     else 
     { 
      Session["Edit_Secret_1"] = null; 
     } 
    } 
} 
} 
+0

Спасибо :) Это сработало как шарм :) – Matthew