繁体   English   中英

检查用户名是否存在于asp.net表单中

[英]Check if username exists in a asp.net form

我目前正在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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM