ASP.NET - 页面重定向中的奇怪错误

时间:2013-06-20 14:14:02

标签: asp.net session redirect button

我正在编写一个用户可以登录其帐户的网站。

登录帐户后,用户可以更改其秘密问题或答案。为此,他必须遍历三页:

1)第一页询问用户密码,即使他已经登录。如果接受了密码,则会创建一个名为 Edit_Secret_1 的会话,内容为成功

2)加载第二页时,会检查会话 Edit_Secret_1 的内容。如果它们为null,表示用户通过地址栏导航到页面,则会将其重定向到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 个答案:

答案 0 :(得分: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...
    }
}

答案 1 :(得分: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;
        }
    }
}
}