天天看點

日志不說謊--Asp.net的生命周期 【結題】

日志不說謊--Asp.net的生命周期 【結題】

這個問題解決掉了,要想知道為什麼Page.IsPostBack為true,就要看看Asp.net中是怎麼實作這個屬性的;

日志不說謊--Asp.net的生命周期 【結題】

打開Reflector,依次點開System.Web.UI.Page 

日志不說謊--Asp.net的生命周期 【結題】

public bool get_IsPostBack()

日志不說謊--Asp.net的生命周期 【結題】

{

日志不說謊--Asp.net的生命周期 【結題】

    if (this._requestValueCollection != null)

日志不說謊--Asp.net的生命周期 【結題】

    {

日志不說謊--Asp.net的生命周期 【結題】

        if (this._isCrossPagePostBack)

日志不說謊--Asp.net的生命周期 【結題】

        {

日志不說謊--Asp.net的生命周期 【結題】

            return true;

日志不說謊--Asp.net的生命周期 【結題】

        }

日志不說謊--Asp.net的生命周期 【結題】

        if (this._pageFlags[8])

日志不說謊--Asp.net的生命周期 【結題】
日志不說謊--Asp.net的生命周期 【結題】

            return false;

日志不說謊--Asp.net的生命周期 【結題】
日志不說謊--Asp.net的生命周期 【結題】

        if ((this.Context.ServerExecuteDepth <= 0) || ((this.Context.Handler != null) && (base.GetType() == this.Context.Handler.GetType())))

日志不說謊--Asp.net的生命周期 【結題】
日志不說謊--Asp.net的生命周期 【結題】

            return !this._fPageLayoutChanged;

日志不說謊--Asp.net的生命周期 【結題】
日志不說謊--Asp.net的生命周期 【結題】

    }

日志不說謊--Asp.net的生命周期 【結題】

    return false;

日志不說謊--Asp.net的生命周期 【結題】

}

日志不說謊--Asp.net的生命周期 【結題】

IsPostBack由兩個因素決定:1.request value collection (form post collection)  if that's missing then it's not postback straight away. 2.detected if data coming from ViewState contains same hash code as on previous request ,that is if the hash code doesn't match then it is not a postback 

日志不說謊--Asp.net的生命周期 【結題】
日志不說謊--Asp.net的生命周期 【結題】

繼續閱讀