IsPostBack深入探讨
if ( ((collectionBasedOnMethod["__VIEWSTATE"] == null) && (collectionBasedOnMethod["__VIEWSTATEFIELDCOUNT"] == null)) && ((collectionBasedOnMethod["__EVENTTARGET"] == null) && !flag)) { return null; } 如上的条件意味着请求的键中同时没有“__VIEWSTATE”,“__EVENTTARGET”,“__VIEWSTATEFIELDCOUNT”,并且flag为false则返回null。flag为false意味着没有键为“null”值以“__VIEWSTATE”开头并且也没有值为“__EVENTTARGET”的键值对。 此处得出结论③如果QueryString或Form虽然有请求值,但是QueryString或Form中的Key没有“__VIEWSTATE”和“__EVENTTARGET”和“__VIEWSTATEFIELDCOUNT”,并且没有键为“null”值以“__VIEWSTATE”开头并且也没有值为“__EVENTTARGET”的键值对,则IsPostBack=false。 3.1.5 this.Request.QueryStringText.IndexOf(HttpResponse.RedirectQueryStringAssignment, StringComparison.Ordinal) != -1 if (this.Request.QueryStringText.IndexOf(HttpResponse.RedirectQueryStringAssignment, StringComparison.Ordinal) != -1) { collectionBasedOnMethod = null; } HttpResponse.RedirectQueryStringAssignment的值为“__redir=1”,上面的代码的意思是如果QueryStringText中包括包括“__redir=1”则返回null。在HttpRequest.Redirect中会判断如果IsPostBack为true,并且URL中不包含有“__redir=1”时,会给URL中增加“__redir=1”。一般情况下我们使用request.Redirect迁移到的页面都应该是IsPostBack=false,有一种特殊的情形是使用request.Redirect迁移到当前页,此时IsPostBack为true。此种情况发生时在request.Redirect中给URL中增加“__redir=1”。执行到page. ProcessRequestMain时会重新将IsPostBack判断为fales。 此处得出结论④使用Response.Redirect方式向自画面迁移时,此时IsPostBack=false。 此时大家可能会有疑问为什么使用Response.Redirect方式向自画面迁移时要特殊处理,使用Response.Redirect向其他画面迁移为什么不要。使用Response.Redirect向其他画面迁移时Response.Form=null,Response.QueryString=null,所以可以判断是IsPostBack=false。但是使用Response.Redirect方式向自画面迁移时Response.QueryString<>null,所以要特殊判断。 3.2 this._isCrossPagePostBack if (this._isCrossPagePostBack) { return true; } 在Page的PreviousPage属性中会对_isCrossPagePostBack进行设置,具体代码如下: public Page PreviousPage { get { … ITypedWebObjectFactory vPathBuildResult = (ITypedWebObjectFactory) BuildManager.GetVPathBuildResult(this.Context, this._previousPagePath); if (typeof(Page).IsAssignableFrom(vPathBuildResult.InstantiatedType)) { |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |