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

时间:2011-04-13 22:54:15

标签: c# asp.net

我目前正在asp.net和c#中创建一个注册表单。我希望能够做的是允许用户输入用户名,当他们从文本框中删除焦点时,它会检查mysql数据库以查看用户名是否存在。如果是,则显示css容器以通知用户已经使用了用户名。

我试图使用Javascript / JQuery隐藏工作正常的CSS容器。我的计划是在文本框上运行textchanged事件,然后如果此函数返回true,则使用javascript / jquery重新显示css容器。但是,我发现要使用文本更改事件,我需要在字段上启用autopostback,这也意味着表单刷新并尝试提交表单,从而阻止我的计划工作。

修改 响应有关使用更新面板的情况。我使用表单

中的以下代码段尝试了此方法
   <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显示css容器但似乎没有任何东西似乎在文本框失去焦点后直接显示。但是,当我单击提交按钮时,会显示response.write(),这不是我想要的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用Updatepanel表单asp.net Ajax工具包来防止回发。或者你可以使用JQuery进行AJAX并获得JSON响应。

答案 1 :(得分:0)

所以短版本是这样的:

ASP.NET WebForms通常不会执行 ajax。这不是他们的设计目标。它们是专为回发而设计的。所以你需要从它们中删除动作的“ASP.NET”部分,并严格依赖 来处理AJAX。

所以你需要一个web服务目标来传递“建议的用户名”,你需要一个javascript方法来“当更改发生时,通过ajax检查”和一个方法“on ajax complete,display框”。

webservice部分可以是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>