很多时候,在WebForm的Page_Load事件中,都需要判断当前form是否是IsPostBack。而该属性在什么时候会变化呢,本文给出一些个人的观点
一 IsPostBack的作用
IsPostBack主要是用来check 当前的form 是否是第一次得到请求。当IsPostBack == false 时, 表示是第一次请求。之所以要有此属性来判断是因为所以server control的事件处理都需要通过Page_Load来触发。换句话讲,凡是支持服务器事件的控件,也会对当前的form 发出request。
二 IsPostBack的值的确定
- 使用Server.Transfer切换页面时,IsPostBack = false;
- post方式下,若 Request 中无值,既Request.Form == null, 则IsPostBack = false; Get方式下,如果Request中无值,既 Request.QueryString == null, 则IsPostBack = false;
- QueryString.Form中有请求值,但其中没有Key,ViewState,EventTarget,ViewStateFileCount,并且没有键值为 null, 则IsPostBack = false;
- Response.Redirect时 IsPostBack = false;
- 发生跨页提交(CrossPagePostBack),当访问PreviewPage 属性的时候,对于源Page,IsPostBack = true;
- 发生跨页提交,目标页面的 IsPostBack = false;
- Server.Execute时, IsPostBack = false;
- Page运行期间,对应的dll 被更新并page 树结构发生变化, IsPostBack = false。