用于从代码隐藏中触发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');),以便我们可以避免在浏览器后退按钮单击时显示弹出窗口。
嗨民间,请回复。我会很感激你! –