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

Cin*_*dro 11 asp.net asp.net-mvc jquery

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

我正在使用jQuery并想知道是否使用了用户名"mark",我还没有达到数据库链接.

[HTML]

<input id="user_name" name="user_name" onchange="UserCheck()" type="text" value="" />
<div id="status" />
Run Code Online (Sandbox Code Playgroud)

[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);
    }
}
Run Code Online (Sandbox Code Playgroud)

tug*_*erk 14

检查以下链接:

立即检查用户名是否存在 - ASP.NET MVC远程验证

你需要的是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; } 
Run Code Online (Sandbox Code Playgroud)

你的行动结果:

[HttpPost]
public JsonResult doesUserNameExist(string UserName) {

    var user = Membership.GetUser(UserName);

    return Json(user == null);
}
Run Code Online (Sandbox Code Playgroud)

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

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

jquery.validate.min.js

jquery.validate.unobtrusive.min.js

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

注意

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

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