コードビハインドからJavaScriptコードをトリガするために使用されるコードスニペット(C#の)ブラウザの戻るボタンは、サーバーによって送信された保存されたページ状態を表示しますが、JavaScriptを使用して行われたDOMの変更は保存されません。
int returnValue = SaveStudent("John", "XII"); // SaveStudent() is a C# function that saves the student details in DB and returns studentId.
hdnStudentId = returnValue ; // hdnStudentId is a hidden-field control
ScriptManager.RegisterStartupScript(this, this.GetType(),
"ShowStudent", "showStudentDetails();",true);
"showStudentDetails()" JavaScriptメソッドの定義がようである:ここでは
function showStudentDetails(){
If($('[id*=hdnStudentId]').val() > 0){
// show the popup
}
}
は、問題の説明です:
Webページ 'WebPage1.APSX'では、DBにデータを保存した後、ScriptManagerクラス(前述)を使用して ブートストラップポップアップを表示します。
ここでは、隠しフィールド変数の値を、DBに挿入された挿入されたrowid (12345など)に設定します。
ScriptManagerクラス は、スクリプトをDOMに正常に登録し、ポップアップを表示します。
その後、私はここのhidden-field変数を-1にリセットします。 ポップアップで、私は別のページにリダイレクトするボタンコントロールを持っています 'WebPage1.APSX'。
$( '[id * = hdnStudentId]')。val( ' - 1');
ユーザーが「ブラウザの戻るボタン」をクリックすると、サーバー側のコードにヒットせず、 はサーバーによって送信された前のページのインスタンスに基づいてUIをレンダリングします。
これは、サーバーから送信されたページの以前のインスタンスであるため、隠しフィールド 変数が「12345」に設定の代わります-1(必ず、なぜ、我々はすでに に-1値をリセットしなかった)と表示もう一度ポップアップ。
要件:ユーザーが「ブラウザのバックボタン」をクリックしたときに、我々はヴァル((つまり$(「[ID * = hdnStudentId]」)だけでなくDOMで以前に操作されたデータを覚えておく必要があります'-1');)ブラウザのバックボタンクリックでポップアップを表示しないようにします。
こんにちはフォークス。私はあなたに感謝するよ! –