2010-08-12 14 views
0

모노레일, activerecord 및 jquery를 사용하고 있습니다. 우편 번호 입력란이있는 양식이 있습니다. 나는 폼에 관련된 내 활성 기록 클래스에있다 : 당신이 볼 수 있듯이, 그때 jQuery를 규칙을 검증 자동 생성 ValidateRegExp 밸리데이터 속성을 사용하고ValidateRegExp 클라이언트 측과 서버 측 문제

[Property] 
     [ValidateNonEmpty] 
     [ValidateRegExp(@"/^\d{5}(-\d{4})?$/", "Invalid")] 
     public string ZipCode { get; set; } 

. 문제는 정규식이 자바 스크립트에서 C#과 다른 것입니다. Javascript는/정규 표현식 앞뒤에 C#은 필요하지 않지만. 슬래시를 넣으면 jQuery 유효성 검사가 작동하지만 자바 스크립트 유효성 검사를 무시하고 js가 비활성화 된 양식을 제출하면 (또는 누군가 테스트 케이스와 같은 다른 수단을 통해 개체를 저장 한 경우) 우편 번호가 왜냐하면 C#은 슬래시를 싫어하기 때문입니다.

그럼 내 질문은 자바 스크립트와 C#을 어떻게 하나의 정규식으로 사용 하시겠습니까? 앞뒤에 슬래시를 추가하는 것이 현명하기 때문에 jQuery 유효성 검사를 위해 슬래시를 사용하지 않고 C#으로 정규 표현식을 지정할 수 있습니다.하지만이 경우는 그렇지 않습니다.

+0

사용중인 Monorail의 버전과 jQuery.validator의 버전을 알려 주시면 도움이 될 것입니다. 사용하고있다 –

답변

1

주변 정규 표현식 자체를 지정해야합니다 (/ 자 제외).

클라이언트 측에서 문제가 발생하면 페이지에 JS 오류 (있는 경우)와 실제 모노 코드로 페이지에 작성된 JS 코드를 포함 시키면 도움이됩니다 , 그리고 사용하고있는 모노레일 버전.

  "function(value, element, param) { return new RegExp(param).test(value); }" 
: 사이드 참고로

은 해당 조각 (코드베이스의 현재 버전으로서) 라인 (378)에있다 JQueryValidator.cs

의 유효성 특성에서 JS 검증 규칙을 생성하는 코드를보고를 할

/expression/ 형식이 아닌 new RegExp(expression)이 사용된다는 사실을 나타냅니다. Monorail의 jquery 유효성 검사 통합이 괜찮은 것은 분명합니다.

0

jQuery 1.4.2를 사용하고 있습니다. MonoRail의 어떤 버전을 사용하고 있는지, Castle.MonoRail.Framework dll은 v2.0.0.0을 말합니다. 나는 그것이 매우 새롭기 때문에 지난 3 개월 이내에 그것을 업데이트했다. 당신이 보여주는 js는 나를 위해 다음을 생성하기 때문에 (ValidateRegExp 표현식에 슬래시가 포함되어 있지 않으면) 나보다 더 새로운 버전을 가지고 있음을 나타냅니다.

"user.username": {required : true , regExp :^[\ w] {4,50} $}

이것은 인용 부호 나 슬래시로 싸여 있지 않으므로 분명히 js에 구문 오류가 있습니다. 나는 내 버전의 MonoRail에있는 결함이있는 클래스를 제거하기 위해 AbstractValidator를 기본 클래스로 사용하여 새로운 RegExp 유효성 검사기를 작성했습니다.

지난 몇 달 동안 해결 된 문제인지 아십니까? 그렇지 않으면 js에서 새 RegExp을 생성하는 방법을 설명 할 수 없습니다.

관련 문제