[ZZ]asp.netページライフサイクル

5816 ワード

ASP.NETでウェブサイトを作る時はIsPostBack()を考えていませんでしたが、結果として問題が発生しました。解決後、この文章を探しました。ついでにページのライフサイクルを勉強します。
-----------------------------------------------
転載http://www.cnblogs.com/dotnetnuke/archive/2008/09/28/1301406.html
 
ASP.NET開発者には、ASP.NETのページライフサイクルを理解することが重要です。主にどこに特定の方法を置いているかを知るためと、いつ各種ページの属性を設定しますか?しかし、ページのライフサイクルで提供されるイベントの処理方法を記憶して理解するのはとても難しいです。インターネット上にはページライフサイクルの内部メカニズムに関する文章がたくさんありますので、この文章は技術の基礎部分を簡単にカバーするだけで、より主要な目的は簡単にページライフサイクルを記憶する方法を提供することです。
ASP.NETページのライフサイクルを正確に記憶するには、各段階で何が起こっていますか?マイクロソフトの文書が提供するASP.NETライフサイクルは以下の通りです。
  • Page Request
  • Start
  • Page Initialization
  • ロード
  • Validation
  • Postback event handling
  • Rendering
  • ユニロード
  • この組み合わせによって略語が簡単に出ます。Page Request技術はページライフサイクルの一部ではないので(この段階ではページ周期を開始するかどうかだけを示しています。あるいはキャッシュからページを読み込むだけです。)、私たちは便利のために、この段階は含まれていません。
  • S–Start
  • I–Initialize
  • L–ロード
  • V–Validate
  • E–Event Handling
  • R–Render
  • このように略語「SILVER」を組み合わせると、この英語の単語はとても覚えやすいです。もちろん、ページライフサイクルの最後の一環であるunloadは中に含まれていません。必要があれば、「SILVER-U」または「SILVER-YOU」として記憶することができます。「この記憶法の完璧性は少し壊れていますが、今はページライフサイクルを簡単に覚えています。そして、一歩ごとに何が起きていますか?どんな事件が発生していますか?
    1.スタート
    この段階で、ページ属性は、例えばRequest  Response、  IsPostBackUICulture 。 , 。 (override) , PreInit , master page theme profile property 。 , (postback) , view state , , 。2.Initialize
    この段階は開発者にとって重要です。この段階では、themeが適用され、すべてのコントロールに一意のIDが設定されています。開発者はこの段階で呼び出しが可能です。Init  InitCompletePreLoad 方法です。マイクロソフトはこれらの方法について次のように提案しています。
  • Init –このイベントは、すべてのコントロールが初期化され、肌の設定も適用された後に発生します。このイベントを使用してコントロールの初期化値を読み取ります。
  • InitComplete –このイベントはPageの対象に触発され、すべての初期化作業が完了してからできることをこのイベントで処理します。
  • PreLoad ・ページまたはコントロールがロードイベントに入る前に何か処理するべきものがあれば、このイベントを使用します。Pageはこのイベントをトリガすると、Pageは自分とすべてのコントロールにview stateをロードし、すべてのRequestの中のpostbackデータを処理します。
  • 3.ロード
    この段階は開発者が一番多く使う段階かもしれません。この段階では、すべてのコントロールがview stateに情報を充填してロードされ、Onloadイベントがトリガされます。この段階では、ページ上のすべてのサービスエンドコントロールに属性を設定し、query stingsを得て、データベース接続を確立します。
    4.Validation
    あなたのコントロールが検証を求めるなら、この段階で検証が行われます。このときコントロールのIsValid属性をチェックできます。この段階に関連するイベントはValidateです。文字列群を検証することができる重負荷方法があります。この重負荷方法は特定のコントロールグループの検証を行います。
    5.Event Handling
    全てのサーバ端末コントロールのイベント処理はこの段階で発生しました。つまりClick  SelectedIndexChangedこれらのイベントはサーバ端末コントロールに適用されます。ページ要求がフィードバック(postback)であれば、これらのイベントの処理関数はコントロールによりトリガされます。この段階で使用できるイベントは以下の通りです。
  • LoadComplete –この段階で、ページ上のすべてのコントロールのロードが完了しました。
  • PreRender –ここにはいくつかのポイントがあります。第一:ページオブジェクト各コントロールのEnsreChild Controls関数を呼び出し、最終的に自分のものを呼び出します。次に、DataSourceIDを持つデータバインディングコントロールは、すべて自分のData Bind関数を呼び出します。注意すべき点は、Prrenderイベントは一つのページのコントロールごとに発生します。このイベントの最後に、ページとすべてのコントロールのVieStateが格納されます。・4591678・
  • SaveStateComplete –ここでは、View Stateはすでに保存済みです。何か操作があればコントロールを変更する必要はありませんが、View Stateを変更する必要があります。SaveStation Complotteの中に置いてもいいです。
  • 6.Render
    レンダリング(Render)実際にはイベントではありません。ページオブジェクトはコントロールごとのRenderメソッドを呼び出して、順番にコントロールを出力するHTMLコードです。ユーザーがカスタマイズしたコントロールを作成した開発者はこの段階に興味があります。ユーザーがカスタマイズしたHTMLコードを出力する標準的なやり方はRender方法です。コントロールがASP.NETサーバから継承されている場合、あなたはASP.NETサーバからコントロールを引き継ぐかもしれません。Renderメソッドを書き換える必要はありません。ユーザーコントロールのデフォルトの行動とは異なる行為をしたい場合を除いて、これらはこの文書の範囲を超えています。もっと知りたいなら、Microsoft's Developing Cusm AS.NET Server Contros.(http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspx)を参照してください。
    7.アンロード
    最後にこのイベントは、まず各コントロールによってトリガされ、最後にページによってトリガされます。この時点で、すべてのコントロールは出力ストリームとして描画されました。変更できませんでした。この段階では、レスリングの操作に異常が発生します。このイベントは主にデータベース接続をオフにしたり、開いたりしたファイルを登録したり、他のタスクを登録したりするために使用されます。
    ページの周期にはどのような方法がありますか?
    これらの方法はすべて書き換えられます。これらの方法は再帰的に呼び出されるものもあり、ページの内容によって繰り返し呼び出されるものもあります。このリストはページのロード時に最も共通する順序で並べられています。
  • Construct
  • ProcessRequest
  • FrameworkInitialize
  • InitializeCulture
  • If child controlls are present:
  • AddParsedSubObject
  • CreateControlCollection
  • AddedControl
  • ResolveAdapter
  • DeterminePostBackMode
  • OnPreInit
  • OnInit
  • TrackViewState
  • OnInitComplete
  • OnPreLoad
  • OnLoad
  • OnLoadComplete
  • EnsureChildControls
  • CreateChildControls
  • OnPreRender
  • OnPreRenderComplete
  • SaveViewState
  • OnSaveStateComplete
  • CreateHtmlTextWriter
  • RenderControl
  • Render
  • RenderChildren
  • VerifyRenderingInServerForm
  • OnUnload
  • Dispose
  • 結論
    ASP.NETプログラムを開発するには、いつ何が起こるかを知ることが大切です。ページの中のイベントがどのように繰り返し展開されているかを理解して、大量の頭をかいたり、間違った時間を節約したりすることができます。これらのページの周期での出来事を覚えにくい時、この使い方がプログラムのどこで何をすればいいのかを整理してほしいです。
    この文章を書くのは、みんなを助けるためであり、自分のためにもなります。熟練した開発者でも、その先のことを忘れてしまうことがあります。この文章は手抜かりなく、初心者や中級レベルの開発者に「小技」を提供して、基本的な間違いを避けるために役立ちます。
    ASP.NETを使って楽しい時間を過ごしてください。
    住所:http://69.10.233.10/KB/aspnet/ASPNET_Page_Lifecycle.aspx