2013-04-11 92 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了一下。