我第一次尝试 MVC3 远程验证。我将它用于经典的“用户名是否被占用”场景,但我失败了。我已经检查了 chrome 开发人员中的 ajax 信息,它看起来像是在发送值,但是在我的验证控制器中,字符串为空。
从 ajax 标头(在 google 开发人员中):
UserData.login:jon
验证控制器:
public class ValidationController : Controller
{
//
// GET: /Validation/
public JsonResult IsUsernameAvailable(string login)
{
var repo = new Repository();
bool IsNameInUse = repo.CheckUserName(login);
if (IsNameInUse == true)
{
return Json("The Username has been taken, please try another", JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}
}
“检查用户名”方法:
public bool CheckUserName(string Username)
{
var existingUser = (from u in db.useraccount
where u.login.Equals(Username)
select u).SingleOrDefault();
if (existingUser == null)
{
return false;
}
else
{
return true;
}
}
并且用户模型上有 Remote 属性:
[Remote("IsUserNameAvailable", "Validation")]
[Display(Name = "Choose a Login Name")]
[StringLength(40)]
[Required]
public string login { get; set; }
我已经阅读了一些关于在验证控制器中手动绑定的内容,但是我用来构建它的示例并没有提到任何相关内容,所以我假设手动绑定只是对我做错的事情的一个补丁。如果您需要任何其他数据,请告诉我。