Tim, Danke für die Antwort. Ich habe ein kleines Experiment gemacht, in dem ich ein TextBox-Steuerelement dynamisch in der Page_Load-Methode erstelle und hinzufüge.
Im Postback klicken Ereignis von Button auf der Seite, ich versuche, den Wert der Text-Eigenschaft der TextBox zu erhalten. Ich kann den Wert im click-Ereignis des Buttons abrufen, wenn das Steuerelement dynamisch im Page_Load-Ereignis und nicht in der OnPreInt-Methode hinzugefügt wird. Ich denke, dass der Wert Text in ViewState beibehalten wird, obwohl das Steuerelement in Page_Load Methode hinzugefügt wurde.
nach dem Code:
<div>
<p>
<asp:Label ID="lbl" runat="server" />
</p>
<p>
<asp:PlaceHolder ID="plcHolder" runat="server"></asp:PlaceHolder>
</p>
<p>
<asp:Button ID="btn" runat="server" Text="Click" OnClick="btn_Click" />
</p>
</div>
private void _createTextBox()
{
TextBox textBox = new TextBox();
textBox.ID = "txtBox";
textBox.Width = 250;
textBox.ReadOnly = false;
plcHolder.Controls.Add(textBox);
}
protected void Page_Load(object sender, EventArgs e)
{
_createTextBox();
if (!this.IsPostBack)
{
Control ctrl = plcHolder.FindControl("txtBox");
if (ctrl != null)
{
TextBox txtBox = ctrl as TextBox;
txtBox.Text = DateTime.Now.ToString();
}
}
}
protected void btn_Click(object sender, EventArgs e)
{
Control ctrl = plcHolder.FindControl("txtBox");
if (ctrl != null)
{
TextBox txtBox = ctrl as TextBox;
lbl.Text = txtBox.Text;
}
}
Bitte lassen Sie mich wissen ist das richtig oder was mache ich falsch?
http://stackoverflow.com/q/4761273/284240 'OnLoad' funktioniert vielleicht, aber nicht immer, Sie sind auf der sicheren Seite in' OnInit'. –