2010-07-15 6 views
2

내 모델에 DateTime 속성이 있는데 DataAnnotations를 사용하여 유효성을 검사하고 싶습니다.DateTime 속성의 DataAnnotations

필자는 내 DateTime 대신 DateTime (예 : "7/14/2010") 대신 며칠 (예 : "3")으로 DateTime을 가져 오려고합니다. 사용자가보기에 "3"을 입력하면 DataAnnotation은 해당 항목이 유효하지 않다고 판단하고 그 것이 문제입니다.

이 시나리오에서 사용할 수있는 옵션은 무엇입니까?

도움 주셔서 감사합니다.

+0

참고 : 어떻게 해결 했습니까? 내 테이블에 datetime이 있습니다. - 뷰에서 일 수를 입력하고,이 날짜를 현재 날짜와 시간에 더하고 결과를 테이블에 저장하려고합니다. 그래서 부분 클래스를 사용하여 모델을 확장하여 데이터베이스에 저장되지 않을 정수 속성을 추가했습니다. POST에서 DateTime.Add를 수행하고 결과 datetime을 테이블에 저장합니다. –

답변

2

소리가 난다 작업. "days"단위의 측정은 DateTime이 아닌 TimeSpan입니다. TimeSpan으로 속성을 표시하도록 모델을 업데이트합니다. 다음과 같은 사용자 지정 유효성 검사기를 사용하여 유효성을 검사 할 수 있습니다.

[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)] 
public class TimeSpanAttribute: ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     if (value is TimeSpan) 
     { 
      return true; 
     } 
     else if (value is String) 
     { 
      TimeSpan result; 
      return TimeSpan.TryParse((string)value, out result); 
     } 

     return false; 
    } 
} 
1

사과와 오렌지를 비교하고 있다고 생각합니다. 속성이 DateTime으로 지정된 경우 해당 속성에 대해 값 3을 입력 할 수 없습니다.

왜 Int 유형의이 속성을 만들지 않습니까?

그 후, 당신은 당신이 추가 또는 예를 들어 뺀 필요 어떤 날짜 만들려면이 정수 값을 사용 ... 날짜 시간을 반환해야하는 경우 : 잘못된 유형을 사용하는 것처럼

DateTime myDate = DateTime.Now.Date.AddDays(intValue); 
+0

안녕하세요 Leniel이 도와 줘서 고맙습니다. 제 질문은 명확하지 않아서 원래 게시물에 덧글을 달았습니다. 다시 감사합니다. –

관련 문제