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。

原文地址:https://www.cnblogs.com/y112102/p/3084860.html