ページを更新すると、最後のイベントも「リロード」されます。たとえば、同じデータをデータベースに挿入しようとします。
どうすればこれを回避できますか? (C# を使用)
最も単純で非常に一般的な解決策は、データベースへの挿入が完了したら、ユーザーを別のページ (「ありがとう」ページなど) にリダイレクトすることです。
Response.Redirect("ThankYou.aspx");
このようにして、ユーザーがページをリロードすると、「ありがとうございました」ページがリロードされ、サーバー上で再度アクションが実行されることはありません。
1 つのページに固執したい場合、問題を処理する別の一般的な方法は、セッション変数を「フラグ」として使用することです。
if (Session["inserted_to_db"] == null)
{
//insert to database...
//......
//......
Session["inserted_to_db"] = true;
}
else
{
//already inserted, ignore or throw error
}