如何解决检查用户名是否以asp.net形式存在
| 我目前正在asp.net和c#中创建注册表。我想要做的是允许用户输入用户名,当他们从文本框中移开焦点时,它会检查MysqL数据库以查看用户名是否存在。如果是这样,则会显示一个css容器来通知用户该用户名已被使用。 我尝试使用Javascript / JQuery隐藏工作良好的CSS容器。我的计划是在文本框中运行textchanged事件,然后如果此函数返回true,则将使用javascript / jquery重新显示css容器。但是,我发现要使用文本更改事件,我需要在该字段上启用自动回发,这也意味着该表单已刷新并尝试提交该表单,因此使我的计划无法正常工作。 编辑 为了回应有关使用更新面板的抱怨。我已经尝试过使用表单中的以下代码段尝试此方法 <asp:ScriptManager ID=\"scriptManager\" runat=\"server\" />
<asp:UpdatePanel runat=\"server\" ID=\"userUpdate\" UpdateMode=\"Conditional\">
<Triggers>
<asp:AsyncPostBackTrigger ControlID=\"txtUsername\" EventName=\"TextChanged\" />
</Triggers>
<ContentTemplate>
<asp:TextBox id=\"txtUsername\" TextMode=\"SingleLine\" required
placeholder=\"Username\" runat=\"server\"
ontextchanged=\"txtUsername_TextChanged\" AutopostBack=\"True\" />
<span class=\"tooltip\">Please enter your username</span>
<span class=\"fieldExists\">Username exists</span>
</ContentTemplate>
</asp:UpdatePanel>
当文本框使用文本更改事件失去焦点时,这将停止自动回发整个页面。但是,没有添加任何带有我添加的Response.Write()代码的页面。我试图使用Javascript打印hello world或显示css容器,但是在文本框失去焦点之后似乎没有任何显示。但是,当我单击提交按钮时,然后显示response.write(),这不是我想要的。
谢谢你的帮助。
解决方法
您可以使用Updatepanel表单asp.net Ajax工具包来防止回发。另外,您也可以使用JQuery进行AJAX并获取JSON响应。
,因此,简短版本如下所示:
ASP.NET WebForms通常不执行ajax。这不是他们设计的目的。它们是为回发而设计的。因此,您需要从其中删除操作的\“ ASP.NET \”部分,并严格依赖于使用AJAX进行处理。
因此,您需要一个Web服务目标来将“建议的用户名”传递给它,您需要一个javascript方法来传递“当发生更改时,通过ajax进行检查”,以及一个方法来“在ajax完成后显示框”。
Web服务部分可以是ashx或asmx或svc或PageMethod(取决于您正在使用多少其他ASP.NET东西)。甚至可能是基于GET的ASPX页面(对于大多数开发人员来说,使用过高的asmx / ashx概念是多余的)。
这两种方法看起来像:
function AjaxResult( response ) {
}
function AjaxCheck(event) {
// do the $.ajax() here and on success call AjaxResult with the response
}
然后将第二个绑定到文本框,如下所示:
<asp:TextBox ID=\"MyTextBox\" runat=\"server\" AutoPostBack=\"false\" />
<script type=\"javascript\">
$(\'#<%= MyTextBox.ClientID %>\').change(AjaxCheck);
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。