mahani
دوشنبه 27 اسفند 1386, 13:29 عصر
من کلی تو سایتهای دیگه گشتم بعدم تو این سایت و چیزای زیادی دستگیرم شد ولی هنوز با یه چیزی مشکل دارم!
من یه button و یه placeholder بصورت static درست کردم
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button ID="Button1" runat="server" Text="Submit"/>
</div>
</form>
کد 1:
protected overridevoid OnInit(EventArgs e)
{
base.OnInit(e);
CreateText();
}
کد 2:
protected overridevoid LoadViewState(object savedState)
{
base.LoadViewState(savedState);
CreateText();
}
کد 3:
protected void Page_Load(object sender, EventArgs e)
{
CreateText();
}
کد 4:
private TextBox txt;
private void CreateText()
{
txt = new TextBox();
txt.ID = "myText";
PlaceHolder1.Controls.Add(txt);
}
اگر در codebehind فقط از کد (1و4) یا (2و4) یا (3و4) استفاده کنیم و بعد از load شدن page در textbox مثلا 123 تایپ کنیم و button را بمنظور postback کلیک کنیم مشاهده میشود که در هنگام postback کد 1 یا 2 یا 3 فراخوانی و بعد CreateText هم فراخوانی میشود. تا قبل از اتمام کد 1 یا 2 یا 3 مقدار ""=txt.Text میشود.
حالا چرا به محض اتمام کد 1 یا 2 یا 3 مقدار "123"=txt.Text میشود؟
یا میتونم سوال رو جوره دیگه مطرح کنم! کد 1 یا 2 یا 3 در سه مرحله متفاوت از life cycle هستند ولی انگار بعد از اتمام هر کدام اطلاعات از viewstate خوانده شده و به controlها انتقال میابد!!!
من یه button و یه placeholder بصورت static درست کردم
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button ID="Button1" runat="server" Text="Submit"/>
</div>
</form>
کد 1:
protected overridevoid OnInit(EventArgs e)
{
base.OnInit(e);
CreateText();
}
کد 2:
protected overridevoid LoadViewState(object savedState)
{
base.LoadViewState(savedState);
CreateText();
}
کد 3:
protected void Page_Load(object sender, EventArgs e)
{
CreateText();
}
کد 4:
private TextBox txt;
private void CreateText()
{
txt = new TextBox();
txt.ID = "myText";
PlaceHolder1.Controls.Add(txt);
}
اگر در codebehind فقط از کد (1و4) یا (2و4) یا (3و4) استفاده کنیم و بعد از load شدن page در textbox مثلا 123 تایپ کنیم و button را بمنظور postback کلیک کنیم مشاهده میشود که در هنگام postback کد 1 یا 2 یا 3 فراخوانی و بعد CreateText هم فراخوانی میشود. تا قبل از اتمام کد 1 یا 2 یا 3 مقدار ""=txt.Text میشود.
حالا چرا به محض اتمام کد 1 یا 2 یا 3 مقدار "123"=txt.Text میشود؟
یا میتونم سوال رو جوره دیگه مطرح کنم! کد 1 یا 2 یا 3 در سه مرحله متفاوت از life cycle هستند ولی انگار بعد از اتمام هر کدام اطلاعات از viewstate خوانده شده و به controlها انتقال میابد!!!