Javascript AutoPostBack还原我对事件onChange所做的更改。ASP.NET

Javascript AutoPostBack还原我对事件onChange所做的更改。ASP.NET,javascript,asp.net,webforms,Javascript,Asp.net,Webforms,这些是我在asp.net中使用的控件。所有内容都在UpdatePanel中 <asp:TextBox ID="TxtDoc" runat="server" MaxLength="4"></asp:TextBox> <asp:DropDownList ID="TipoDoc" runat="server" AutoPostBack="False"></asp:DropDownList> <asp:DropDownList ID="Ddl2" r

这些是我在asp.net中使用的控件。所有内容都在UpdatePanel中

<asp:TextBox ID="TxtDoc" runat="server" MaxLength="4"></asp:TextBox>
<asp:DropDownList ID="TipoDoc" runat="server" AutoPostBack="False"></asp:DropDownList>
<asp:DropDownList ID="Ddl2" runat="server" AutoPostBack="True"></asp:DropDownList>
当我从下拉列表“TipoDoc”中选择一个项目时,函数cambiarLength会更改文本框“TxtDoc”的最大长度。 当我从第二个dropdownlist“Ddl2”中选择一个项目时,因为autopostback为true,所以上一个文本框中的maxlength将恢复为初始值。我怎样才能避免这样的问题呢

试试这个:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    { 
        TipoDoc.Attributes.Add("onChange", "cambiarLength(this, '" + TxtDoc.ClientID + "');");
    }   
}

您需要以某种方式将文本框的状态存储在服务器上。一个选项是在
TipoDoc
上设置AutoPostBack=True,并在服务器上执行MaxLength计算。@ferc我试图避免在服务器上对该dropdownlist进行验证,并从客户端进行验证。如果触发回发,是否真的需要在服务器上存储该文本框的状态?可以避免使用多个UpdatePanel吗?好的,我发现可以使用hiddenfields从客户端保留值并再次检索它们。
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    { 
        TipoDoc.Attributes.Add("onChange", "cambiarLength(this, '" + TxtDoc.ClientID + "');");
    }   
}