Asp.net

ASP.NET OnTextChanged 未從更新面板內部觸發

  • May 31, 2019

我正在使用 ASP.NET 更新面板使用文本框的 on 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>

以及背後的程式碼:

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

emailText.InnerText = "Email: " + emailInfo;
urlText.InnerText = "Webiste: http://www.Elwazefa.com/User/" + url ; 

**程式碼不會在 textchanged 上觸發,**但會在 ButtonClick 或 PageLoad 上觸發。

問題是什麼?

使用 ASP.NET 4.0

<asp:TextBox AutoPostBack="true" OnTextChanged="thingId_TextChanged" ID="thingId" runat="server"></asp:TextBox>

當焦點從文本框中失去時,文本框上的AutoPostBack將觸發回發。TextChanged事件將在任何後續回發時觸發(可能是由於按鈕點擊或文本框焦點更改)。所以你需要確定

  1. 更改文本後,您將移出文本框
  2. 您更改的任何控制項都是更新面板的一部分(可以是不同的更新面板)。如果沒有任何更新面板的一部分,那麼這些更改將不會反映在客戶端。

我的猜測是你可能患有#2。您可以使用諸如 Fiddler(或 FireFox 上的 Firebug)之類的工具來檢查當焦點從文本框中失去時瀏覽器是否正在觸發 AJAX (XHR) 請求。

引用自:https://stackoverflow.com/questions/8696904