2016-06-17 21 views
0

に私は後ろのIsPostBackプロパティはどこに格納されていますか? asp.net

<body> 
    <form id="form1" runat="server"> 
     <div>  
     <asp:Button runat ="server" ID="btnTest" Text ="Request Somethig" 
     OnClick ="OnClick" /> 
     </div> 
    </form> 
</body> 

とコードasp.netでこのプログラムを持っている:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    if (IsPostBack) 
    Response.Write("A Post Back has been sent from server"); 
    } 

protected void OnClick(object sender, EventArgs e) 
{   
    //The button has AutoPostBack by default 
} 

} 

私は、サーバーhttp://localhost:50078/Default.aspx にページを要求した場合、サーバーインスタンスを作成します。

Response.Write("A Post Back has been sent from server"); 
:クラス_Default.csの、 は、それは火災やイベントをPage_Load、このラインは、最初に実行されることはありませんでしょう

そしてその理由はIsPostBackプロパティ=私はボタンをクリックしてヒットした場合、私は今、IsPostBackプロパティがtrueになり、私のブラウザでは、私はメッセージが表示されます、バックサーバーからのポストを要求します

その後偽

"A Post Back has been sent from server" 

私の質問は次のとおりです。IsPostBackプロパティがfalseからtrueに変更され、その値が格納される場所はどこですか?

私が知る限り、サーバーがHTMLでクライアントに送信されると、_Default.csクラスからサーバーが作成するインスタンスは破棄されます。そのため、ボタンをクリックするとIsPostBackプロパティについては何もしないと仮定しますポストバック)。

サーバーストレージは、ページ自体の_VIEWSTATE隠し変数にIsPostbackの値を設定しますか?

ありがとうございます!

+0

あなたが見ることができます:[IsPostBackプロパティは、技術的に動作しない方法](http://stackoverflow.com/questions/5650580/how-does-ispostback-technically-work/5650663#5650663)。 – ConnorsFan

答えて

2

IsPostBackはPage classのパブリックプロパティです。 this questionへのDaryalの答えは、そのクラスの構造を説明しています。その答えから

Pageクラスは、TemplateControlクラスから派生。

public class Page : TemplateControl, IHttpHandler 

と抽象的なControlクラスから派生したTemplateControlクラス。

public abstract class TemplateControl : Control, ... 

Pageクラスから派生したControlクラスには、Pageという名前の仮想プロパティがあります。

// Summary: 
//  Gets a reference to the System.Web.UI.Page instance that contains the server 
//  control. 
// 
public virtual Page Page { get; set; } 

Pageクラスには、IsPostBack、IsValidなどのプロパティがあります。

// Summary: 
//  Gets a value that indicates whether the page is being rendered for the first 
//  time or is being loaded in response to a postback. 
//   
public bool IsPostBack { get; } 
関連する問題