2011-01-28 4 views
3

나는 클래스 관리자가 string Action에 전송되는 것이므로 사용자 이름은 항상 null입니다.MVC3 원격 특성 검증

http://localhost/admin/admins/usernameavailable?Admin.Username=ferwf 

문제는 UsernameAvailable이 http 쿼리에서 Admin.Username 값과 Username 값을 전송한다는 것입니다. 뷰 모델을 사용하면 어떻게 될까요?

감사

기본 모델 바인더에 접두사를 지정할 수

답변

5

:

public ActionResult UsernameAvailable([Bind(Prefix = "Admin")]string username) 
{ 
    return Json(
     this.AdminRepository.GetLoginByUsername(username), 
     JsonRequestBehavior.AllowGet 
    ); 
} 

을하거나 Admin 모델 사용 : 가정하고 다음을

public ActionResult UsernameAvailable(Admin admin) 
{ 
    return Json(
     this.AdminRepository.GetLoginByUsername(admin.Username), 
     JsonRequestBehavior.AllowGet 
    ); 
} 

지금 username 매개 변수가 올바르게 바인딩됩니다 요청 :

http://localhost/admin/admins/usernameavailable?Admin.Username=ferwf 
+0

두 번째 방법을 권장합니다. 기본적으로 다른 동작 방법처럼 생각합니다.이 경우 기본 모델 바인더는 사용자 이름 문자열이 아닌 Admin에 바인딩됩니다. –

+0

이 효과가 있습니다. 그러나 나는 "AdminViewModel"이 아니라 "Admin"이 아니라 바인딩해야했다 : public ActionResult UsernameAvailable (AdminsEditViewModel row) – ShaneKm