用於從代碼隱藏中觸發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
}
}
這裏是問題的說明:
在網頁「WebPage1.APSX」中,將數據保存到數據庫之後,我使用ScriptManager類(如上所述)顯示 引導彈出窗口。
這裏我設置了插入rowid 隱藏字段變量的值插入數據庫(比如12345)。
ScriptManager類 成功在DOM中註冊腳本並顯示彈出窗口。
此後,我將Here hidden-field變量重置爲-1。在 彈出窗口中,我有一個按鈕控件,該按鈕控件重定向到另一頁 'WebPage1.APSX'。 ('[id * = hdnStudentId]')。val(' - 1');
現在,用戶點擊'瀏覽器後退按鈕',它不會觸及服務器端代碼,並且會根據服務器發送的先前頁面實例呈現UI。
由於這是網頁的前一個實例的服務器,隱場 變量被設置爲「12345」,而不是-1(不知道爲什麼,我們已經 並重置爲-1值)發送和顯示再次彈出。
要求:當用戶點擊 '瀏覽器的後退按鈕',我們需要記住在DOM以前處理過的數據,以及(即$( '[ID * = hdnStudentId]')VAL(。 '-1');),以便我們可以避免在瀏覽器後退按鈕單擊時顯示彈出窗口。
嗨民間,請回復。我會很感激你! –