Ti mando un esempio in vb.net (la conversione in c# la fai tu).
Nella pagina *.aspx metti un PlaceHolder nel punto in cui vuoi mettere i controlli creati dinamicamente:
codice:
<form id="Form1" method="post" runat="server">
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
Nel Codebehind:
codice:
Private Function GetForm() As HtmlForm
Return CType(Me.FindControl("Form1"), HtmlForm)
End Function
Private Function GetLabel() As Label
Return CType(Me.FindControl("lbl1"), Label)
End Function
Private Function GetTextBox() As TextBox
Return CType(Me.FindControl("tb1"), TextBox)
End Function
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
This = Me
PrintLn("Page_Load")
Dim tb As New TextBox()
tb.ID = "tb1"
tb.Text = "Scrivi qualcosa"
Me.PlaceHolder1.Controls.Add(tb)
Me.PlaceHolder1.Controls.Add(New LiteralControl("
"))
Dim btn As New Button()
btn.Text = "Spedisci"
Me.PlaceHolder1.Controls.Add(btn)
AddHandler btn.Click, AddressOf btn1_click
Me.PlaceHolder1.Controls.Add(New LiteralControl("
"))
Dim lbl As New Label()
lbl.ID = "lbl1"
Me.PlaceHolder1.Controls.Add(lbl)
End Sub
Private Sub btn1_click(ByVal Sender As Object, ByVal e As System.EventArgs)
PrintLn("btn1_click")
GetLabel().Text = "Mi hai chiamato, finalmente!
Mi hai spedito: " & Me.GetTextBox().Text
End Sub