C# 未发生OnTextChange部分回发

C# 未发生OnTextChange部分回发,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有以下用于ContextChanged事件的代码: protected void CustomTextBox_OnTextChanged(object sender, EventArgs e) { if (tick.Attributes["class"] == "tick displayBlock") { tick.Attributes["class"] = "displayNone"; tick.Attributes.Add("class",

我有以下用于ContextChanged事件的代码:

protected void CustomTextBox_OnTextChanged(object sender, EventArgs e)
{
    if (tick.Attributes["class"] == "tick displayBlock")
    {
        tick.Attributes["class"] = "displayNone";
        tick.Attributes.Add("class", "displayNone");
    }
    checkAvailability.Attributes.Add("class", "displayBlock");
    checkAvailability.Attributes["class"] = "displayBlock";
}
以及:


此问题是由双重自动回发引起的

父控件:

<uc:CustomTextBox ID="ctbMyTextBox"
                        OnTextChanged="CustomTextBox_OnTextChanged"              
                        AutoPostBack="True"             
                        class="someClass">         
</uc:CustomTextBox>      

子控件:

<asp:UpdatePanel ID="upMyUpdatePanel" runat="server">     
    <ContentTemplate>            
        <uc:CustomTextBoxChild ID="ctbcMyTextBox"
                          OnTextChanged="CustomTextBox_OnTextChanged"              
                          AutoPostBack="True"             
                          class="someClass">         
        </uc:CustomTextBoxChild>      
    </ContentTemplate> 
</asp:UpdatePanel> 

在父控件中,我删除了
AutoPostBack=“True”
,这为我解决了这个问题


如果有人能进一步解释为什么双重自动回邮会导致这种情况,我很乐意检查您的答案是否正确。

从父项中删除自动回邮并将其添加到子项(您的自定义回邮)。这将解决问题。此外,由于它是一个自定义控件,因此您从父控件继承属性。即使从custo控件中删除Autopostback,我认为它也可以工作,因为默认情况下,该属性在其父控件中为true。

set
UpdatePanel Mode=“Conditional”
AutoPostBack=“True”和enableviewstate=“True”


现在它可以工作了

你写:部分回发。但是,我看不到您在问题中提到AJAX。那么,您使用AJAX吗?如果是这样,请发布代码。@MichelvanEngelen我添加了UpdatePanel,允许我执行ajax。啊,明白了,CustomTextBox_OnTextChanged是我创建的自定义服务器控件,父控件有AutoPostBack=“true”,子控件实例也有AutoPostBack=“true”使ContextChanged执行两次将其从父级中删除,现在可以工作了。叹气*如果有人想要悬赏积分,你可以发布答案,我感觉很慷慨!
<asp:UpdatePanel ID="upMyUpdatePanel" runat="server">     
    <ContentTemplate>            
        <uc:CustomTextBoxChild ID="ctbcMyTextBox"
                          OnTextChanged="CustomTextBox_OnTextChanged"              
                          AutoPostBack="True"             
                          class="someClass">         
        </uc:CustomTextBoxChild>      
    </ContentTemplate> 
</asp:UpdatePanel>