IsPostBack深入探讨
{
return false; } if (this._isCrossPagePostBack) { return true; } if (this_pageFlags[8]) { return false; } return ( ( (this.Context.ServerExecuteDepth <= 0) || ((this.Context.Handler != null) && (base.GetType() == this.Context.Handler.GetType())) ) && !this._fPageLayoutChanged ); } } 我们将每一个if判断作为一个小节,作如下的分析。 3.1 this._requestValueCollection == null if (this._requestValueCollection == null) { return false; } 可以看出_requestValueCollection等于null时IsPostBack就等于false。 在Page.ProcessRequestMain(bool, bool)中有如下的代码: if (this.PageAdapter != null) { this._requestValueCollection = this.PageAdapter.DeterminePostBackMode(); } else { this._requestValueCollection = this.DeterminePostBackMode(); } PageAdapter.DeterminePostBackMode最终还是调用了Page.DeterminePostBackMode,下面我们看Page.DeterminePostBackMode如何实现。 protected internal virtual NameValueCollection DeterminePostBackMode() { if (this.Context.Request == null) { return null; } if (this.Context.PreventPostback) { return null; } NameValueCollection collectionBasedOnMethod = this.GetCollectionBasedOnMethod(false); if (collectionBasedOnMethod == null) { return null; } bool flag = false; string[] values = collectionBasedOnMethod.GetValues((string) null); if (values != null) { int length = values.Length; for (int i = 0; i < length; i++) { if (values[i].StartsWith("__VIEWSTATE", StringComparison.Ordinal) || (values[i] == "__EVENTTARGET")) { flag = true; break; |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |