Tim、 お返事ありがとうございます。 私は、Page_LoadメソッドでTextBoxコントロールを作成して動的に追加する小さな実験を行った。
ページのButtonのポストバッククリックイベントで、TextBoxのTextプロパティの値を取得しようとしています。 コントロールがOnPreIntメソッドではなくPage_Loadイベントに動的に追加されたときに、Buttonのclickイベントで値を取得できました。 コントロールがPage_Loadメソッドで追加されていても、Text値がViewStateに保持されていると思います。次のコード
:
<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'の安全面にいます。 –