、あなたがに任意のポストバックを行うたびに覚えている、それだけでイベントを処理するためだとしても、フルページのライフサイクルが実行されます。それはすべて一つの大きな機能にあったかのようにこれを理解しやすくするために、あなたのコードを考えることができ、より多くのように:もちろん
public partial class test : System.Web.UI.Page
{
// Page_Load runs for EVERYTHING
protected void Page_Load(object sender, EventArgs e)
{
// -- Constructor Area
StringBuilder sb = new StringBuilder();
// -- Page Init Area
// -- ViewSate is loaded
// -- Page Load Area
if (!IsPostBack)
{
sb.Append("one");
lbl.Text = sb.ToString();
}
// -- Validation controls are checked
// -- If valid, start handling events
// Handle your click event
if (cmdSb_Clicked)
{
sb.Append("two");
lbl.Text = sb.ToString();
}
// -- DataBinding Area
// -- Save ViewState
// -- Render Page: the class is turned into html that is sent to the browser
// -- Unload -- Page is disposed
}
}
これは実際には何が起こるかではありませんが、このようにそれの思考を開始し、あなたは正しい道を歩いています。この場合、clickイベントはコード!IsPostBack
と同時に実行されることはありませんが、毎回新しいStringBuilderを使用していることに注意してください。ページのライフサイクルの詳細についてはこちらを
チェック:SENSを作る
http://msdn.microsoft.com/en-us/library/ms178472.aspx
私はまだそれがなぜsb.Append文字列を追加する以下の例でそれを取得していない偉大な説明のためにジョエル、ありがとう。ボタンをクリックすると、ポストバックが発生します。以前と同じように動作するはずです。 StringBuilder sb = new StringBuilder(); protected void Page_Load(オブジェクト送信者、EventArgs e) { sb.Append( "one"); lbl.Text = sb.ToString(); } プロテクトvoid cmdSb_Click(オブジェクト送信者、EventArgs e) { sb.Append( "two"); lbl.Text = sb.ToString(); } –
"1"だけをstringbuilderに追加すると、ポストバックではありません。イベントの発生をクリックすると、ポストバックになります。私が期待しているように、この場合は「2つ」の代わりに「onetwo」を見ていますか? –