Почему asp.net OnTextChanged не работает
Я использую 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>
и код:
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
2 ответов
<asp:TextBox AutoPostBack="true" OnTextChanged="thingId_TextChanged" ID="thingId" runat="server"></asp:TextBox>
autopostback элемента управления on text-box вызовет post-back, когда фокус будет потерян из текстового поля. TextChanged
событие будет запущено на любом последующем пост-бэк (может быть из-за нажатия кнопки или изменения фокуса текстового поля). Поэтому вам нужно убедиться
- после изменения текста вы выходите из текстового поля
- любые элементы управления, которые вы меняете, являются частью панели обновления (может быть другая панель обновления). Если нет части какого-либо обновления панель, то эти изменения не будут отражены на стороне клиента.
Я думаю, что вы, вероятно, страдаете от #2. Вы можете использовать такой инструмент, как Fiddler (или Firebug в FireFox), чтобы проверить, запускает ли браузер запрос AJAX (XHR), когда фокус теряется из текстового поля.
как @ VinayC опубликовал,AutoPostBack
означает, что страница будет возвращаться на сервер, когда ваш TextBox
теряет фокус. Никакое встроенное событие не вызывает обратной передачи каждого символа, добавленного в текстовый ввод, и по уважительной причине. UpdatePanel
обратные ссылки не заставляют страницу мерцать, но они могут быть такими же тяжелыми, как и полная обратная связь.
если вы хотите обойти это, вы можете дать текстовое поле клиент onchanged
обработчик событий, JavaScript которого будет построен из Page.ClientScript.GetPostBackEventReference()
.
на правильно решением было бы использовать вызов метода AJAX из вашего кода JavaScript, а не UpdatePanel
частичная обратная передача в onchanged
.