我已经阅读了很多一步一步的教程,仍然无法让我的代码工作,我在这个网站上也没有运气的解决方案,我不知道我做错了什么。
我正在使用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);
}
}
答案 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)