2013-04-11 7 views
0

MVC3 원격 유효성 검사를 처음 시도하고 있습니다. 내가 고전을 위해 그것을 사용하는 '그 사용자 이름은'시나리오이며, 나는 실패하고있다. 크롬 개발자가 아약스 정보를 확인하고 값을 보내는 것처럼 보이지만 유효성 검사 컨트롤러에서 문자열이 null입니다. (구글 현상 제)를 AJAX From 헤더 원격 유효성 검사, 값이 유효성 검사 컨트롤러에 연결되지 않음

:

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("IsUserNameAvailable", "Validation")] 
    [Display(Name = "Choose a Login Name")] 
    [StringLength(40)] 
    [Required] 
    public string login { get; set; } 

유효성 검사 컨트롤러에서 수동 바인딩에 대한 몇 가지 내용을 읽었지만이 빌드를 사용하는 예제는 그에 대해 아무 것도 언급하지 않았으므로 수동 바인딩은 내가 잘못 수행 한 패치 일 것이라고 가정합니다. . 다른 데이터가 필요한 경우 알려주십시오.

답변

1

오케이 문제가 발견되었습니다. 전송되는 아약스에서 볼 수 있듯이이 필드는 UserData.login을 전송하지만 유효성 검사 컨트롤러의 매개 변수는 로그인 만합니다. 그들은 일치해야하므로 해결됩니다.

이제 내 viewmodel을 약간 변경해야 할 것 같습니다.

관련 문제