我想創建一些自定義Web控件包裝一些現有的控件。例如,其中一個是文本框的包裝(因爲我需要其他行爲,如相應的驗證器)。問題是,我不知道如何獲取該回放的數據。自定義WebControl和回發
非常簡單的例子:
public class MyTestBox: WebControl
{
protected TB { get; set; }
public Text
{
get { return TB.Text; }
set { TB.Text = value; }
}
protected override void CreateChildControls()
{
TB= new TextBox()
Controls.Add(TB);
}
}
但如果我現在和控制測試Web窗體:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<bleh:MyTextBox ID="MyTextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Submit" />
然後輸入文本到文本框,並提交後,在TextBox1中的文本可在Page_Load中,而MyTextBox1.Text爲空。發送回傳時,我應該更改哪些內容可用?
編輯:
東西我覺得現在是初始化控制時,只需檢查申請表:
protected override void OnInit(EventArgs e)
{
TB.ID = this.ID + "_TextBox1";
Controls.Add(TB);
if (Page.Request.Form[TB.UniqueID] != null)
{
Text = Page.Request.Form[TB.UniqueID];
}
}
這似乎是工作,但感覺有點哈克。這看起來是一種合理的方式嗎?
它是從System.Web.UI.Textbox繼承的選項嗎?如果是這樣,你不會在意文本屬性,你將專注於你想添加的任何功能。 – adt 2011-03-02 09:03:24
在這種情況下,這是一個選項,我可能會這樣做。 另一方面,也有一些更復雜的控件有類似的問題,它有更多的問題,並且可能更好地堅持我在編輯中添加的方式。 – Kuzco 2011-03-02 09:35:42