我是第一次尝试MVC3远程验证。我使用它作为经典'是用户名采取'场景,我失败了。我已经检查了chrome developer中的ajax信息,它看起来像是在发送值,但在我的验证控制器中,字符串为null。
来自ajax标题(在谷歌开发者中):
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);
}
}
'CheckUserName'方法:
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; }
我已经阅读了一些关于在验证控制器中手动绑定的内容,但是我用来构建它的示例没有提到任何关于它的内容,所以我假设手动绑定只是对我做错的事情的补丁。如果您需要任何其他数据,请与我们联系。
答案 0 :(得分:1)
好的,我发现了问题。正如发送的ajax中所见,该字段正在发送UserData.login,但验证控制器的参数只是登录。他们需要匹配,这样才能解决。
我想我现在需要改变一下我的视图模型。