我有一个输入所需用户名的文本框。当用户键入他们的名字并且输入失去焦点时,我想发送一个异步回传以检查他们的用户名是否已被占用。这在没有引发错误的情况下工作正常,但我也想处理错误。带有TextBox.OnTextChanged的UpdatePanel异步事件没有触发
根据MSDN,我在ScriptManager中添加了一个AsyncPostBackError处理程序。我已经在每次页面加载时都尝试了这一点,并且只在非回发页面加载时尝试过。
我有我的一个UpdatePanel文本框,如下所示:
<asp:UpdatePanel ID="upLogin" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="tbLogin" runat="server" placeholder="username"
OnTextChanged="tbLogin_TextChanged" required />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tbLogin" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
在代码隐藏,我有:
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.GetCurrent(Page).AsyncPostBackError +=
BootstrapLogin_AsyncPostBackError;
}
void BootstrapLogin_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
tbLogin.Attributes.Remove("data-success");
tbLogin.Attributes["data-error-message"] = myErrorMessage;
}
protected void tbLogin_TextChanged(object sender, EventArgs e)
{
throw new Exception("what?");
}
我还添加了Async="true"
我Default.aspx页面的标记。
当我在我的TextBox上有AutoPostBack="true"
时,抛出错误并且从不调用AsyncPostBackError处理程序。出于某种原因,在回发期间,Page.IsAsync
是错误的。我怀疑这是它没有得到处理的原因(或者说明为什么)。
当我设置AutoPostBack="false"
时,尽管指定了触发器,但根本不会触发回发。
想法?
你能发布错误吗? – sh1rts 2014-11-07 00:35:44
错误只是我抛出的异常。所以在这种情况下,错误是“什么?” :) – dfoverdx 2014-11-07 01:04:44