2009-03-13 5 views
1

현재 입력이 유형 (int, 유효하지 않은 날짜 등의 문자)에 유효하지 않기 때문에 DefaultModelBinder 오류가 표시됩니다. UI 기본 오류 요약 "Something has been wrong ..." 변환에 실패한 특정 속성과 관련된 특정 오류 메시지는 표시되지 않습니다.모델 바인딩 유형 변환 유효성 검사

예를 들어 모델 속성은 미래에 발생할 필요가있는 datetime 일 수 있습니다. "{Property}는 미래에 발생할 필요가있는 날짜입니다."오류를 줄 수있는 Validator 특성으로 꾸밀 수 있습니다. 예 4/15/2009 "를 참조하십시오. 이 메시지는 유형 변환 오류와 관련 될 수 있습니다.

모델 바인딩 중에 형식 변환이 실패 할 때 어떻게 설명 오류 메시지를 줄 수 있습니까? 사용자 정의 모델 바인더, 필터, 모든 예제가 감사하겠습니다.

사이드 노트 : 저는 NHib Val, Castle Val, xVal Lib 및 기타 수동 메소드의 구현을 테스트했으며이 모든 것이 잘 작동합니다. 그러나 이것들이 나를 돕는 것으로 보지 않습니다. 형식 변환 문제 ...

업데이트 : MVC Codeplex 문제 목록에서 S. Sanderson (xVal 작성자)과 관련된이 교환을 발견했습니다. 내가 더 자세히보고하고 문제 ... http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=3230

답변

0

에 대해 설명합니다 저는 개인적으로 검증 속성과 C# 코드로 엔티티에 있어야합니다, 그래서 나는 다음과 같은 aproach가 좀 이상 가치가 생각처럼 :

http://codebetter.com/blogs/david.hayden/archive/2009/01/31/asp-net-mvc-and-validation-using-idataerrorinfo-and-validation-application-block.aspx

엔티티는 IDataErrorInfo을 구현합니다. 외에도 각 속성의 검증 특성을 확인에서, 당신은 또한 널 (null) 또는 유효하지 않은 캐스트 나 같은 다른 사용자 지정 논리를 확인할 수 있습니다

때 수행합니다

public string this[string columnName] 
    { 
     get 
     { 
      return DoValidation(columnName); 
     } 
    } 

당신이 할 수있는 무엇인가 :

public string this[string columnName] 
    { 
     get 
     { 
      if(columnName=="myDatePropertyName") 
      { 
       //Add custom logic (invalid casts or whatever) 
      } 
      return DoValidation(columnName); 
     } 
    } 

이 모델에서 마음에 들지 않는 것은 각 속성에 유효성 검사 오류 메시지를 넣어야한다는 것입니다.하지만 이는 좋은 출발점입니다.

어쨌든 이것은 사용자 정의 오류를 관련 속성에 바인딩하는 모델의 예입니다. 나중에 ValidationSummary에 표시됩니다.

희망이 도움이되었습니다!

관련 문제