TextBoxコントロールを再作成しようとしていますが、 問題は、ポストバック後にテキストボックスの値が初期状態に戻ります。テキストボックスasp.netサーバーコントロールを再作成
誰かがポストバック後に値を保持する方法を知っていますか?
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyTextBox runat=server></{0}:MyTextBox>")]
public class MyTextBox : WebControl
{
[Bindable(true)]
[DefaultValue("")]
public string Text
{
get
{
return (String)ViewState["Text"] ?? string.Empty;
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
var a = string.Format(@"<input type='text' id='{0}' name='{0}' value='{1}' />", ID, Text);
output.Write(a);
}
protected override void Render(HtmlTextWriter writer)
{
RenderContents(writer);
}
}
コントロールが状態バッグに早期に(Page_Initで)追加されていることを確認しましたか? – Olaf
@Olafそれがマークアップに追加されました – Omu
WebControlの代わりにTextBoxを継承してTextを上書きするオプションはありませんか?それはあなたの質問に対する直接的な答えではありませんが、根本的な問題を解決するかもしれません。 – Olaf