2011-10-19 2 views
2

원격 유효성 검사에 문제가 있습니다.MVC3에서 원격 유효성 검사를 사용할 때의 Null 값

원격 유효성 검사기를 추가 한 속성을 가진 viewmodel이 있는데 폼을 실행하고 텍스트 상자에 문자열을 입력하면 컨트롤러에 전달 된 값이 null입니다.

뷰 모델의 속성은 다음과 같다 :

[Required(ErrorMessage = "Enter the host's name")] 
[Remote("ValidateHostFullName", "BoardroomBooking", ErrorMessage = "Enter a different name")] 
[DisplayName("Host's Name")] 
public string HostFullName { get; set; } 

컨트롤러의 유효성에 대한 코드는 다음과 같다 :

public ActionResult ValidateHostFullName([Bind(Prefix="BookingReceptionViewModel")]string HostFullName) 
{ 
    if (!HostFullName.Equals("John Smith")) 
    { 
     return Json(true, JsonRequestBehavior.AllowGet); 
    } 

    return Json("{0} is not allowed", JsonRequestBehavior.AllowGet); 
} 

HostFullName의 캐릭터의 값에 null 없음을 나타낸다 상자에 입력 된 내용과 관련이 있습니다. 나는 바인드 접두사를 사용하거나 사용하지 않고 시도했지만 아무런 차이가 없다.

저는 이것을 모델에서 시도해 보았습니다. 작동하지만, viewmodel을 사용할 때만 문제가있는 것으로 보입니다.

감사

마크

+1

생성 된 HTML에서 해당 입력 필드의 '이름'은 무엇입니까? FireBug로 검사 할 때 AJAX 요청에 정확히 어떤 값이 게시됩니까? –

+1

@DarinDimitrov 필드의 이름은 HostFullName으로 생성됩니다. 요청은 FireBug에서 "GET/BoardroomBooking/ValidateHostFullName? callback = jQuery15104607706305105239_1319095613374 & HostFullName = John + Smith & _ = 1319095674721"로 표시됩니다. –

+1

콜백 매개 변수의 출처는 어디입니까? 또한 쿼리 문자열 매개 변수는'HostFullName'이라고 불리우므로 액션에 Bind 속성이 필요 없습니다. 그러나 나는이 요청에도 다른 문제가 있다고 생각한다. JSONP 요청은 보이는 것과 다릅니다. –

답변

2

저도 같은 문제가 발생했다. ValidateHostFullName()에 들어오는 매개 변수는 입력 이름과 동일해야합니다.

+0

게시 된 답변에 동의합니다. 나는 그것을 실험했다. 매개 변수는 입력 이름과 일치해야하며 대소 문자는 구분하지 않습니다 (내 입력 이름은 대소 문자가 혼합이지만 매개 변수는 모두 소문자 일 수 있음). 그것은 매우 나쁜 제한입니다. –

0

나는 동일한 문제가있었습니다. 렌더링 된 html 컨트롤은 클래스 이름 앞에 접두사가 붙지 않았지만 원격 유효성 검사 코드에서는 classname.propertyname의 접두어로 바인딩했습니다. 이 바인딩을 제거하면 내 문제가 해결되었습니다. 아니면 속성 이름 접두사로도 나를 위해 잘 작동합니다.

관련 문제