AS.NET WebForm検出ページリフレッシュ(Refsh)
2817 ワード
この文章は翻訳貼付で、原文はDetecting browser'Refresh'from Code behind in C唴を参照してください.
ブラウザの「更新」は常に問題を引き起こします.特にページとデータベースが相互作用すると、結果はもっと悪いかもしれません.ページが更新されるたびに、コード処理がないと、データベース操作を繰り返します.
これはデータの不一致を招いて、甚だしきに至ってはプログラムが切ってしまうかもしれません.
「リフレッシュ」を検出する方法の一つは、JavaScriptを使って、F 5と右クリックイベントを無効にすることです.それでも、端末ユーザは他の方法でページを更新します.例えば、Ctrl+R.
「リフレッシュ」を防ぐには、コードを繰り返し呼び出す方法ですか?それともサーバー側でチェックして処理しますか?
下のコードをpage_に置いてください.ロード方法では、「リフレッシュ」を検出できます.
その後、「IsPagerefresh」でユーザーがボタンを押すか、ブラウザからの「リフレッシュ」かを判断することができます.
あなたの役に立ちますように.
ブラウザの「更新」は常に問題を引き起こします.特にページとデータベースが相互作用すると、結果はもっと悪いかもしれません.ページが更新されるたびに、コード処理がないと、データベース操作を繰り返します.
これはデータの不一致を招いて、甚だしきに至ってはプログラムが切ってしまうかもしれません.
「リフレッシュ」を検出する方法の一つは、JavaScriptを使って、F 5と右クリックイベントを無効にすることです.それでも、端末ユーザは他の方法でページを更新します.例えば、Ctrl+R.
「リフレッシュ」を防ぐには、コードを繰り返し呼び出す方法ですか?それともサーバー側でチェックして処理しますか?
下のコードをpage_に置いてください.ロード方法では、「リフレッシュ」を検出できます.
bool IsPageRefresh = false;
//this section of code checks if the page postback is due to genuine submit by user or by pressing "refresh"
if (!IsPostBack)
{
ViewState["ViewStateId"] = System.Guid.NewGuid().ToString();
Session["SessionId"] = ViewState["ViewStateId"].ToString();
}
else
{
if (ViewState["ViewStateId"].ToString() != Session["SessionId"].ToString())
{
IsPageRefresh = true;
}
Session["SessionId"] = System.Guid.NewGuid().ToString();
ViewState["ViewStateId"] = Session["SessionId"].ToString();
}
(訳注:どんな仕事ですか?自分でやってみましょう.時々問題そのものを明らかにして解決する方法があります.)その後、「IsPagerefresh」でユーザーがボタンを押すか、ブラウザからの「リフレッシュ」かを判断することができます.
あなたの役に立ちますように.