0

フォームと送信ボタンのある Web ページがあり、サーバー側でセッション値を使用してフォームが 2 回送信されるのを防ぎました。これは、セッションの初期値が 0 であり、ユーザーが送信をクリックした後に 1 に変更するようなものです。ボタン、送信ボタンが最初にセッション値をチェックするたびに。

しかし、私たちのプロジェクトが公開されたとき、同じ人物に対して 2 つのレコードが存在することを発見しました (つまり、彼らは 2 回提出したことを意味し、おそらく 1 人または 2 人の人物で発生することはあまりありませんでした)。これら 2 つのレコード間の時間間隔0.3秒と非常に小さいので、最初は送信ボタンをダブルクリックするのではないかと思いましたが、コンピューターで試した後でも、データベースに1つのレコードしか挿入されません

これがどのように発生するのか、どうすれば防止できるのか、私は混乱しています。

コードは次のとおりです。

        protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["IsBackForwordPayment"] = 0;
        }
    }

    protected void submit_Click(object sender, EventArgs e)
    {

       if (Session["IsBackForwordPayment"] != null && Session["IsBackForwordPayment"].ToString() != "0")
            Response.Redirect("~/pages/renewal/duplicaterenewal.aspx");

.......
}

セッション値を確認した後、プログラムは別のページにリダイレクトするだけで送信プロセスを終了しないため、可能ですか??

4

2 に答える 2

0

どうやらResponse.End()はコードの実行を停止しません(それはそれが行うと言っていることです)。私はここでこれを発見しました:

Response.Redirectが実行を終了しない

return実行後に実行を終了するには、ステートメントを追加する必要がありますResponse.Redirect()

于 2012-09-12T15:00:02.683 に答える
0

試す

Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true);

これにより、現在のページでの実行が停止します。

于 2012-09-12T14:15:26.557 に答える