Page类的IsPostBack原理
IsPostBack是属于page类下面 只读属性(get)。其中上面[]包着的 简称为特性 简单说就是代码执行时 运行[]里面的对象类方法或者属性(内部利用反射原理)。
// // 摘要: // 获取一个值,该值指示页是第一次呈现还是为了响应回发而加载。 // // 返回结果: // 如果是为响应客户端回发而加载该页,则为 true;否则为 false。 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Browsable(false)] public bool IsPostBack { get; }
前端:
<form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem>1</asp:ListItem> <asp:ListItem>2</asp:ListItem> </asp:DropDownList> </form>
后台:
protected void Page_Load(object sender, EventArgs e) { Response.Write(IsPostBack); Response.Write("<br/>"); } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { Response.Write("1111111111"); }
第一次运行输出false 刷新也是false。
注意这个时刻是get请求 报文中没有__VIEWSTATE
这个时候选择下请求 报文中存在__VIEWSTATE
总结:服务端判断客户端提交的页面对象中 报文体是否存在__VIEWSTATE键,如果存在则设置为true 反之flase。