我已经阅读了很多分步教程,但仍然无法让我的代码工作,我浏览了这个网站上的解决方案,但也没有运气,我不知道我做错了什么。
我正在使用 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);
}
}
最佳答案
查看以下链接:
Check Instantly If Username Exists - ASP.NET MVC Remote Validation
这里您需要的是您正在检查的属性的RemoteAttribute
,并且您还需要实现一个 Controller 操作,该操作返回带有 bool 值的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
上面的博文涵盖了您需要的一切。
注意
请记住,远程
验证不会在服务器端启动。您可能想检查以下链接以进行服务器端远程验证(尽管我不建议在生产中使用它,它充满了漏洞,但它会给您一个想法):
http://www.tugberkugurlu.com/archive/asp-net-mvc-server-side-remote-validation
关于jquery - ASP.NET MVC 用户名可用性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200238/