ASP.NET MVC用户名可用性检查

时间:2011-11-20 08:09:02

标签: jquery asp.net asp.net-mvc

我已经阅读了很多一步一步的教程,仍然无法让我的代码工作,我在这个网站上也没有运气的解决方案,我不知道我做错了什么。

我正在使用jQuery并想知道用户名“mark”是否被采用,我还没有达到数据库链接。

[HTML]

<input id="user_name" name="user_name" onchange="UserCheck()" type="text" value="" />
<div id="status" />

[JS]

function UserCheck() {
    $("#status").html("Checking....");
    $.post("/user/check",
    { username: $("#user_name").val() },
    function (data) {
        if (data == 0) {
            $("#status").html("Available");
        }
        else {
            $("#status").html("Taken");
        }
    });
}


[Controller]

public JsonResult check(FormCollection form)
{
    System.Threading.Thread.Sleep(3000);
    string name = form["username"];

    if (name.Equals("mark")){
        return Json(1);
    } else {
        return Json(0);
    }
}

3 个答案:

答案 0 :(得分:14)

检查以下链接:

  

Check Instantly If Username Exists - ASP.NET MVC Remote Validation

您需要检查的属性是RemoteAttribute,还需要实现一个控制器操作,该操作返回带有布尔值的JsonResult

以下是一个简短的示例:

你的模特:

    [Required]
    [Display(Name = "User name")]
    [Remote("doesUserNameExist", "Account", HttpMethod = "POST", ErrorMessage = "User name already exists. Please enter a different user name.")]
    public string UserName { get; set; } 

您的行动结果:

[HttpPost]
public JsonResult doesUserNameExist(string UserName) {

    var user = Membership.GetUser(UserName);

    return Json(user == null);
}

您可以根据需要调整动作结果中的业务逻辑。

另外,请确保您的注册页面上引用了以下库以及 jQuery 文件:

  

jquery.validate.min.js

     

jquery.validate.unobtrusive.min.js

以上博客文章涵盖了您需要的一切。

注意

请记住,Remote验证不会在服务器端启动。您可能想检查下面的链接以获取服务器端远程验证(我不建议在生产中使用它,但它充满漏洞,但它会给你一个想法)

http://www.tugberkugurlu.com/archive/asp-net-mvc-server-side-remote-validation

答案 1 :(得分:3)

请参阅我关于此主题的完整文章。 How to: Implement Remote Validation in ASP.NET MVC

答案 2 :(得分:0)