Tim, Спасибо за ответ. Я сделал небольшой эксперимент, в котором я создаю и добавляю элемент управления TextBox динамически в методе Page_Load.
В событии Postback щелчка кнопки на странице я пытаюсь получить значение текстового свойства TextBox. Я могу получить значение в событии нажатия кнопки, когда элемент управления динамически добавляется в событие Page_Load, а не в метод OnPreInt. Я думаю, что значение Text сохраняется в ViewState, даже если элемент управления добавлен в метод Page_Load.
следующий код:
<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;
}
}
Пожалуйста, дайте мне знать, правильно ли это или то, что я делаю неправильно?
http://stackoverflow.com/q/4761273/284240 'OnLoad' может работать, но не всегда, вы находитесь в безопасности в' OnInit'. –