2013-08-28 2 views
3

@Range를 사용하여 Regula에서 날짜 범위의 유효성을 검사 할 수있는 방법이 있습니까? (동감 @Min과 @Max)Regula로 날짜 범위 확인

아니면 @Custom을 사용해야합니까? 단지 숫자 나 문자열 -

@Range(min= 

@Range(max= 

는 Date 형의 아무것도 동의하지 않는 것.

답변

1

불행히도 @Range은 숫자 만 허용합니다. 난 당신이 생각처럼 뭔가를 할 수 있다고 생각 :

<input type="hidden" 
     name="date" 
     id="date" 
     data-constraints=" 
      @Future(date='2000/1/1', format='YMD') 
      @Past(date='2010/1/1', format='YMD')" 
/> 

이 날짜가 2000/1/1 이후 및 보장 2010/1/1 전에 (즉, 사이). 나는 date 매개 변수를 문서화하지 않았기 때문에 문서를 작성할 때 구현하지 않았기 때문입니다. 죄송합니다; 내가 1.3 버전의 Regula를 작업하고 있기 때문에 문서가 조금 뒤쳐져있다. 조만간 설명서를 업데이트 할 예정입니다.

+0

감사! 문서는 좋고, 새로운 v.는 좋은 소리로 들립니다. 레코드의 경우 문자열을 사용하는 것이 효과가있는 것처럼 보입니다. 그러나 유닉스 타임 스탬프를 사용했기 때문에 정수 값이 아닐 이유는 없습니다. – sq33G

+0

'@ Range'는 에포크 시간을 사용하고 있다면 작동합니다. 이상한 것은 아마도 어떤 종류의 버그 일 것입니다. 가능한 경우 버그 보고서를 제출하십시오. –

+0

시간 문제는 JavaScript Date.getTime과 필자의 답변에서 설명한 .NET 메소드 사이에 발생했습니다. Regula는 아름답게 작동합니다. – sq33G

0

나는 다음과 같은 해킹 작동하는지 발견

<input type="hidden" data-bind="value: myDateValue.getTime()" ... /> 

(나는 검도 MVVM을 사용하고 있지만 :

나는 Date.getTime()의 형식으로 입력 날짜를 포함하는 두 번째, 숨겨진 입력을 추가

: 나는 확실히 다른 MVVM 라이브러리 내가 최소 및 최대의 유닉스 시간을 생성하는거야) 내 경우에는 서버 측 (ASP.NET MVC에서 동일한 방식) 제한 조건에 대해 다음

을 처리 할 수있어

@Range(min="<%= (dateTime1 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds %>", 
     max="<%= (dateTime2 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds %>") 

편집

필요는 .TotalMilliseconds를 사용하는 - 그리고 심지어 일부 설명 할 수없는 차이가있다.