我目前遇到一个奇怪的问题,即当我单击简单回发到同一页面的 asp.net 按钮时,除 Google Chrome 之外的所有浏览器都将 Page_Load 事件中对 IsPostback 的调用注册为 true。
这促使我尝试发现 ASP .Net 页面中的 IsPostback 属性是如何在技术上实现的,这是我一直在努力寻找的东西。
迄今为止,我的想法是它可能与以下内容有关;
任何人都可以提供用于确定 IsPostback bool 属性的条件的实际分割吗?
注意:我正在寻找实际的实现而不是看法/理论,因为我希望用它来积极解决问题。我还搜索了 MSDN,但迄今为止找不到任何准确涵盖该机制的技术文章。
提前致谢,
布莱恩。
最佳答案
该页面查找 __PREVIOUSPAGE
表单值的存在。
从反射器:
public bool IsPostBack
{
get
{ //_requestValueCollection = Form or Querystring name/value pairs
if (this._requestValueCollection == null)
{
return false;
}
//_isCrossPagePostBack = _requestValueCollection["__PREVIOUSPAGE"] != null
if (this._isCrossPagePostBack)
{
return true;
}
//_pageFlags[8] = this._requestValueCollection["__PREVIOUSPAGE"] == null
if (this._pageFlags[8])
{
return false;
}
return ( ((this.Context.ServerExecuteDepth <= 0)
|| ( (this.Context.Handler != null)
&& !(base.GetType() != this.Context.Handler.GetType())))
&& !this._fPageLayoutChanged);
}
}
关于asp.net - IsPostback 在技术上是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5650580/