在我们的项目中,我们在用户离开页面后删除一些内容。我们正在使用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/

10-09 15:18