为什么asp.net OnTextChanged不起作用

Wah*_*ver 10 asp.net updatepanel textchanged

我使用ASP.NET更新面板使用TextChanged为文本框检索用户信息,这是我的代码:

<asp:UpdatePanel runat="server" ID="up1" ChildrenAsTriggers="true">
<ContentTemplate>
    <asp:TextBox runat="server" ID="loginEmail" Text="Email" 
        CssClass="textBoxes" OnTextChanged="userInfo" AutoPostBack="true"></asp:TextBox>
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="loginEmail" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

和背后的代码:

string url, emailInfo;
emailInfo = loginEmail.Text;
url = Membership.GetUserNameByEmail(emailInfo);

emailText.InnerText = "Email: " + emailInfo;
urlText.InnerText = "Webiste: http://www.Elwazefa.com/User/" + url ; 
Run Code Online (Sandbox Code Playgroud)

在ButtonClick或PageLoad 上,代码不会在textchanged上触发,但它会消失.

问题是什么?

使用ASP.NET 4.0

Vin*_*ayC 11

<asp:TextBox AutoPostBack="true" OnTextChanged="thingId_TextChanged" ID="thingId" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

当文本框中的焦点丢失时,文本框上的AutoPostBack将触发回发.TextChanged事件将在任何后续回发时触发(可能是由于按钮单击或文本框焦点更改).所以你需要确定

  1. 更改文本后,您将移出文本框
  2. 无论您更改哪种控件都是更新面板的一部分(可以是不同的更新面板).如果没有任何更新面板的部分,那么这些更改将不会反映在客户端.

我的猜测是你可能患有#2.您可以使用Fiddler(或FireFox上的Firebug)等工具来检查当文本框中的焦点丢失时浏览器是否正在触发AJAX(XHR)请求.