检查在asp.net表单中是否存在username

本文关键字:是否 存在 username 表单 asp net 检查 | 更新日期: 2023-09-27 17:49:59

我目前正在用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()代码不会向页面添加任何内容。我试过打印hello world或使用Javascript显示css容器,但似乎没有任何东西在文本框失去焦点后直接显示。但是,当我单击提交按钮时,会显示response.write(),这不是我想要的。

谢谢你的帮助。

检查在asp.net表单中是否存在username

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

所以简短的版本是这样的:

ASP。. NET WebForms一般不做 ajax。这不是设计它们的初衷。它们是为回发而设计的。因此,您需要删除"ASP"。. NET"部分的操作,并严格依赖使用AJAX。

所以你需要一个webservice目标来传递"建议的用户名",你需要一个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>