こんにちは、私はボタンのクリックイベントでデータベースにデータを挿入する簡単なコードを持っています。それは正常に実行され、dbにデータを挿入します。私はf5ボタンを押すとデータを挿入した後、同じ値を持つdbに再び新しい行を挿入します。各F5ボタン(リフレッシュ)にbtnAdd_ClickはF5を押したときに起動します
ボタンのクリックイベントが発生し
ワットは問題がありますか?
は、ありがとう Naguのこんにちは、私はボタンのクリックイベントでデータベースにデータを挿入する簡単なコードを持っています。それは正常に実行され、dbにデータを挿入します。私はf5ボタンを押すとデータを挿入した後、同じ値を持つdbに再び新しい行を挿入します。各F5ボタン(リフレッシュ)にbtnAdd_ClickはF5を押したときに起動します
ボタンのクリックイベントが発生し
ワットは問題がありますか?
は、ありがとう Naguのこれが設計されます。 F5キーを押すと、ポストバックだったことをやり直しています。これを防ぐには、
などの無限の量のソリューションがあります。初期ロード時にセッション変数を使用し、最初に保存(保存)されたら値をクリアします。この値の有無を確認してください。
// On inital page load for data entry store a key.
// This is a basic example, you should have a session wrapper
Session["Unsaved"] = 1;
// When you do the save logic make sure you check this session variable and save if
// it still exists.
if (Session["Unsaved"] != null)
{
// Save data here
Session.Remove("Unsaved");
}
else
{
// Show message that save has already completed or session has expired.
}
また、チェックDB側を行うと、私はこれを妨げていた過去に
を(それはあなたのシナリオで有効な可能性として動作しない可能性がある)あなたは、同一のデータを挿入していないことを確認できました例えばリビジョン番号を保存し、リビジョン番号を投稿されたデータと共に提出することによって編集する。保存するときに、リビジョン番号が一致しない場合(各更新で変更され、チェックがDB側で行われるため)、更新が失敗し、メッセージが表示されます。
新しいデータについては、Response.Redirectを「完了」ページに追加して、成功/失敗の更新情報を提供することもできます。リフレッシュすると、挿入/更新を行っていたページではなく、完成したページを再ロードするだけです。
また、さまざまなソリューションがあります。どのシナリオにも完璧なものはありませんので、あなたにとって最適なものを見つける必要があります。
ポストバック後にWebブラウザをリダイレクトする方法があります。これにより、リフレッシュボタンまたはF5を押すと新しいページが読み込まれるようになります。
例:
protected void button_Click(object sender, EventArgs args)
{
// Insert data, etc.
Response.AddHeader("Location", "DifferentPage.aspx");
}
こんにちは、あなたの迅速な応答をありがとう、そしてこれは、この問題を処理するための唯一のソリューションですか?それとも良い方法がありますか? – Nagu
F5は、ブラウザにページを更新するように指示するブラウザコマンドです。この場合は、ポストバックを再送信することを意味します。この動作を無効にすると、ユーザーが期待する標準的なブラウザー機能が破損します。これは、UIデザインの世界では大きなノー・ノーです。 –