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

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

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

编辑响应使用更新面板的sfomate。 我已经使用表单中的以下代码段尝试了此方法

       Please enter your username Username exists   

当文本框使用文本更改事件失去焦点时,这将停止整个页面的自动回发。 但是,我添加的Response.Write()代码没有添加任何内容。 我试图打印你好世界或使用Javascript显示css容器,但在文本框失去焦点后似乎没有任何东西出现。 但是,当我单击提交按钮时,会显示response.write(),这不是我想要的。

谢谢你的帮助。

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

所以短版本是这样的:

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

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

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 } 

你将第二个绑定到文本框,如下所示: