0

ユーザーが自分のアカウントにログインできる Web サイトをコーディングしています。

アカウントにログインした後、ユーザーは自分の秘密の質問または答えを変更できます。そのためには、次の 3 つのページをトラバースする必要があります。

1) ユーザーはすでにログインしているにもかかわらず、最初のページでユーザーにパスワードの入力を求めます。指定されたパスワードが受け入れられると、Edit_Secret_1という名前のセッションが作成され、コンテンツが成功します。

2) 2 番目のページが読み込まれると、セッションEdit_Secret_1の内容がチェックされます。それらが null の場合、つまりユーザーがアドレス バーからページに移動したことを意味し、ユーザーは AccountManagement ページにリダイレクトされます。それ以外の場合、セッションEdit_Secret_1は null に設定されます。これは、ユーザーがセッションで一度秘密の質問/答えを変更した後、アドレス バーから再度ページにアクセスすることを防ぐためです。

3) 3 ページ目に簡単な確認メッセージが表示されます。私はまだそれをしていません。

これは 2 ページ目のスクリーンショットです。

ここに画像の説明を入力

データベースからデータを取得する部分をコーディングしていないため、秘密の質問と秘密の答えのフィールドは空です。

ボタンをテストするために、 [変更の保存] ボタンをコーディングして HomePage.aspx にリダイレクトし、[キャンセル] ボタンは ContactUs.aspx にリダイレクトするようにしました。2 つのボタンのいずれかをクリックすると、AccountManagement.aspx にリダイレクトされます。問題がセッションを 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");
}
4

2 に答える 2

2

page_load メソッドに isPostBack を配置してみてください

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;
        }
    }
}
}
于 2013-06-20T14:23:16.857 に答える