在我们的项目中,我们在用户离开页面后删除一些内容。我们正在使用window.unload事件来执行此操作。
window.onunload = function() {
// delete something
}
我们通常在UpdatePanel中使用按钮,linkbuttons..etc,因此我们不需要检查Page.IsPostBack属性。
今天我们意识到我们使用了UpdatePanel中的一些按钮,这种情况产生了一些错误。之后,我们决定更改我们的方法,在页面顶部定义一个全局变量(var _isPostBack = false),并:
window.onunload = function() {
if (_isPostBack) {
_isPostBack = false;
return;
}
// delete something
}
我应该在Page_Load中设置g_isPostBack,g_isPostBack不变。我尝试了“ RegisterClientScriptBlock”,“ RegisterOnSubmitStatement”和“ RegisterStartupScript”方法。在onunload事件之前调用了注册方法,但是在onunload事件触发后设置了_isPostBack ...
if (IsPostBack)
{
Control c = MyClass.GetPostBackControl(this);
bool inUpdatePanel = ControlParentForUpdatePanel(c);
if (!inUpdatePanel)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "_isPostBack = true;", true);
}
}
有没有人可以帮助我?
最佳答案
那是诀窍...
如果将onsubmit属性添加到表单标签中:
<form id="form1" onsubmit="return yourPostBack()">
然后编写自己的函数:
function yourPostBack()
{
_isPostBack = true;
return true;
}
最后在页面加载中:
if (IsPostBack)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), Guid.NewGuid().ToString(), "_isPostBack = false;", true);
}
使用此方法,您可以在window.onunload中了解它是否为回发
关于c# - 如何确定window.onunload中的PostBack值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8973230/