重新创建textbox asp.net服务器控件

重新创建textbox asp.net服务器控件,asp.net,asp.net-controls,Asp.net,Asp.net Controls,我正在尝试重新创建TextBox控件, 问题是,回发后,文本框中的值返回到初始状态 有人知道如何让它在回发后保持价值吗 [DefaultProperty("Text")] [ToolboxData("<{0}:MyTextBox runat=server></{0}:MyTextBox>")] public class MyTextBox : WebControl { [Bindable(true)] [D

我正在尝试重新创建TextBox控件, 问题是,回发后,文本框中的值返回到初始状态

有人知道如何让它在回发后保持价值吗

    [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);
        }
    }
[DefaultProperty(“文本”)]
[ToolboxData(“”)
公共类MyTextBox:WebControl
{
[可装订(真实)]
[默认值(“”)
公共字符串文本
{
得到
{
返回(字符串)视图状态[“文本”]??字符串。空;
}
设置
{
ViewState[“文本”]=值;
}
}
受保护的覆盖无效渲染内容(HtmlTextWriter输出)
{
var a=string.Format(@“”,ID,Text);
输出。写入(a);
}
受保护的覆盖无效渲染(HtmlTextWriter编写器)
{
渲染内容(作者);
}
}

您的输入没有名称。。。如果没有名字,他的价值永远不会被回复

您的输入没有名称。。。如果没有名字,他的价值永远不会被回复

确实如此,但显然这还不够,您应该检查请求[this.Name]来更新您的文本,否则它将始终为空!实现IPostBackDataHandler也有帮助,但显然这还不够,您应该检查Request[this.Name]以更新文本,否则它将始终为空!实现IPostBackDataHandler还可以帮助您确保控件足够早地添加到状态包中(即在Page_Init中)?@Olaf它添加到标记中。它不是从TextBox继承而不是WebControl(并覆盖文本)的选项吗?这不是对你问题的直接回答,但可能解决了根本问题。Alex是对的:如果你没有继承TextBox(它会自动执行),你必须手动读取Request.Form[this.ClientID]中的发布值,例如在“获取”文本时。我已经尝试过了,它可以工作。您是否确保控件足够早地添加到状态包中(即在Page_Init中)?@Olaf它添加到标记中。它不是从文本框继承而不是WebControl(和覆盖文本)的选项吗?这不是对你问题的直接回答,但可能解决了根本问题。Alex是对的:如果你没有继承TextBox(它会自动执行),你必须手动读取Request.Form[this.ClientID]中的发布值,例如在“获取”文本时。我试过了,效果不错。