문제

MVC C# 앱 내에서 데이터의 유효성을 검사하는 가장 좋은 방법을 찾으려고 노력 중인데 xVal이 가장 적합한 것 같았습니다.그러나 데이터 유형 유효성 검사에 문제가 있습니다.

처음에는 DTO에 UpdateModel을 수행한 다음 DTO에서 유효성 검사를 실행했습니다.이는 필수 필드와 같은 작업에는 훌륭하게 작동했지만, 예를 들어 문자열("asd")을 10진수 필드에 매핑하려고 하면 UpdateModel에서 예외가 발생했습니다.유효성을 검사할 데이터가 있기 전에 UpdateModel을 실행해야 했기 때문에 이 문제를 해결하는 방법을 확신할 수 없었습니다.

내 솔루션은 UpdateModel이 복사할 양식별로 DTO를 생성하고 이에 대한 유효성 검사를 실행한 다음 값을 적절한 DTO에 복사하는 것이었습니다.DTO 양식의 모든 속성은 문자열이므로 UpdateModel이 폭파되지 않으며 xVal을 통해 데이터 유효성 검사를 시행합니다.그러나 필수와 같은 규칙이 시작되는 동안 DataType 규칙을 시작할 수 없는 것 같습니다(이 경우 DataType.Currency를 시도함).

또한 클라이언트 측 유효성 검사가 작동하도록 시도했지만 데이터 유형에 대한 서버 측 유효성 검사를 수행하는 깔끔한 방법이 있기를 바랐습니다.

서버 측에서 데이터 유형의 유효성을 검사하는 것과 관련하여 다른 사람들은 무엇을 했습니까?

도움이 되었습니까?

해결책

결국 내가 한 일은 양식을 나타내는 DTO를 만드는 것이었습니다.이러한 DTO는 Request.Form을 가져와 양식 값과 동일한 이름을 기반으로 모든 양식 값을 내부 속성(예: 공개 문자열 이메일, 공개 문자열 이름)에 자동으로 매핑합니다.

여기에는 모든 문자열 속성이 있으며 여기에 xVal 속성을 추가했습니다.그런 다음 xVal과 정규 표현식을 사용하여 들어오는 데이터가 유효한지 확인했습니다(예: 유효한 날짜, 이메일, 번호 등).이렇게 하면 .Net이 날짜 등으로 구문 분석하는 것과 달리 항상 문자열로 들어가기 때문에 예외가 발생하지 않습니다.

이렇게 하면 데이터가 항상 내가 원하는 검증을 실행할 수 있는 xVal에 전달되도록 할 수 있습니다. 그 다음에 유효한 데이터가 있다는 것을 알고 나면 DateTime과 같은 적절한 유형으로 변환하십시오.

다른 팁

STRING에서 다른 데이터 유형으로 서버 측에서 구문 분석 해야하는 데이터를 유효성있게 유지하기 위해 ValidationAtribute에서 파생 된 사용자 정의 유효성 검사기를 사용하고 있습니다. 예를 들어:

public class DateAttribute : ValidationAttribute
    {

        public override bool IsValid(object value)
        {
            var date = (string)value;
            DateTime result;
            return DateTime.TryParse(date, out result);
        }
    }

또한 사용자 지정 JavaScript 코드를 작성하지 않고 이러한 유효성 검사 속성을 클라이언트 측 및 서버 측 유효성 검사 속성으로 전환하는 방법을 찾았습니다. 다른 유효성 검사 속성 기본 클래스에서 파생해야합니다. 내 것을보세요 클라이언트 측 유효성 검사에 대한 블로그 기사 이것에 대해 더 배우고 싶다면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top