2010-11-27 6 views
1

그래서 String, DateTimeOffset 및 TimeSpan 형식의 일부 속성이있는 Entity Framework로 설정된 엔터티가 있습니다. 문자열에 대한 유효성 검사를 수행하기 위해 필자는 "[Required]"또는 "[StringLength]"와 같은 매우 간단한 속성을 사용했으며 사용 된 컨트롤은 텍스트 상자입니다.ASP.NET MVC의 특성 검사기를 사용하여 DateTimeOffset 및 TimeSpan 유효성 검사

지금 내 문제는 DateTimeOffset 및 TimeSpan에 대한 것이므로 어떤 컨트롤을 사용해야할지 불확실하지만 입력을 확인하는 데 사용할 특성에 대해 더 확신하지 못합니다.

제안 사항?

+0

입력을 확인하는 방법은 무엇입니까? – jfar

+0

웹 브라우저의 입력은 일반적으로 텍스트로 제공되며 MVC는이를 유형으로 변환 할 수 있지만 "OOGABOOGA"가 있으면 확실히 DateTimeOffset으로 작동하지 않습니다. –

답변

0

입력 데이터 유형을 추론하는 방법이 있다고 생각하지 않습니다. 비즈니스 로직에서 필요에 따라 처리하는 것이 유일한 길일 것 같습니다.

-1

timespan이기 때문에 간단한 분명한 유효성 검사 기능인 분에 해당하는 분을 받고 IsNumeric 호출을 수행 할 수 있습니다.

두 날짜를 사용하여 시간 차이를 계산하는 경우 DateDiff 함수를 사용하여 차이를 계산하고 시간 간격을 가져올 수 있습니다. 그러나 이미이 값이있는 경우 시간 단위는 시간 단위 수, 따라서 사용자 지정 함수를 사용하여 IsNumeric을 사용하십시오.

그렇지 않으면 사용자 지정 유효성 검사를 작성하지 않으려면. 가장 쉬운 방법은 RangeValidator 특성을 사용하는 것입니다. 가능한 최소 및 최대 숫자를 입력하십시오.이 속성을 사용하여 유효성 검사가 수행되면 숫자가 아닌 숫자 만 입력하면 False를 반환하므로 잘못된 문자열 유효성 검사 만 수행 할 수 있습니다. 시간 범위의 가능한 값 범위를 확인하십시오. 범위가 중요하지 않은 경우, 상한값을 몇 백만 분 또는 무언가 (예 : Long.MaxValue 또는 Integer.MaxValue)와 같은 안전한 값으로 설정하십시오.

또한 범위와 비교할 시간 간격 값으로 TimeSpan.Ticks()를 전달할 수 있지만 RangeValidator에 텍스트 상자를 보내는 것으로 충분합니다. 텍스트가 아닌지 확인합니다. 문자 및 범위 및 표정 확인, 유효성 검사 완료 및 사용자 정의 유효성 검사 필요 없음

내가 어떻게 지내고 필요한 경우 어떻게 도와 줄 수 있는지 알려주십시오.

+0

@byte 가능한 해결책을 찾을 기회가 있었습니까? –

+0

귀하의 대답은 분명히 이해가되지만, 데이터 유형을 확인한 후에 데이터 유형을 검증하는 방법을 실제로 따르지는 않았을 것 같습니다. 질문의 목적은 선택을 할 때 어떤 입력 유형을 사용할 것인가하는 것입니다 (예 : 텍스트 상자). 그리고 입력을 통해, 그것이 실제로 DateTimeOffset이라는 것을 어떻게 검증 할 것입니까? 귀하의 대답은 당신이 이미 데이터를 가지고 있고 당신이 올바른 유형을 알고 있다고 가정합니다. –

+0

@byte 수신 할 내용을 모르고 유효성 검사 도중 알아 내고 싶다면 두 개의 숨겨진 필드를 날짜로 보내거나 알 수 있습니다. 하나의 텍스트 상자 필드는 틱 (timespan ticks) 그리고이 숫자는 항상 매우 큰 길이이기 때문에 항상 숫자인지, 백만 이상인지를 확인할 수 있습니다. 이것이 당신의 질문에 대답하지 못한다면 나는 아마 그 질문을 완전히 이해하지 못했을 것입니다. 여전히 문제가 있다면, 아마도 UR 질문을 업데이 트하여 자세한 내용을 정교하게 작성하십시오. 시원한? –

관련 문제