2013-04-11 35 views
0

我想第一次尝试MVC3远程验证。我使用它的经典'是用户名采取'的情况下,我失败了。我已经检查了Chrome开发人员的ajax信息,看起来它正在发送值,但在我的验证控制器中,字符串为空。远程验证,值没有得到验证控制器

从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; } 

我已经阅读了一些有关在验证控制器中手动绑定的东西,但是我用来构建这个的示例没有提及任何有关这个的东西,所以我假设手动绑定只是对我做错的事情的补丁。让我知道你是否需要其他数据。

回答

1

好的,我发现这个问题。正如在发送的ajax中看到的,该字段正在发送UserData.login,但验证控制器的参数只是登录。他们需要匹配,这样就解决了。

我想现在我需要改变我的viewmodel了一下。