2009-09-11 4 views
0

asp.net mvc 웹 응용 프로그램에서 잘못된 모델 값에 대한 사용자 지정 메시지를 표시하려고합니다. 내가 겪고있는 문제는 숫자 속성입니다. 사용자는 십진 속성에 바인딩 된 텍스트 상자에 문자열을 입력하고 제출을 클릭 할 수 있습니다. asp.net mvc 모델 바인더 문자열 값을 내 개체의 decimal 속성을 바인딩 할 수 없으므로 단순히 0의 기본값을 유지합니다.게시 된 숫자 값을 asp.net mvc에서 제대로 확인하려면 어떻게합니까?

잘못된 값을 확인하려면 내 모델에서 일부 모델 유효성 검사가 진행 중입니다. 좋은 메시지를 반환하지만 내가이 코드에 도달 할 때까지 분명히 10 진수 속성은 0이 아니므로 내 개체에서 유효하지 않습니다. 이런 종류의 검증을 구현하는 좋은 방법을 찾아 내려고 노력 중입니다. 양식 값을 가로 채서 유효성 검사를 수행해야합니다.

나는 같은 장소에서 모든 유효성 검사를 유지하려고했지만이 솔루션에는 많은 Request.Form이 코드 전체에 걸쳐 흩어져있는 것처럼 보입니다. 아마도 나는 내 자신의 모델 바인더를 작성하고 거기에 이런 종류의 검증을해야합니다. 나는 이것에 대한 의견을 찾고있는 중이다. 감사!

답변

1

ModelState.IsValid를 검토하고 있습니까? 그것은 이미 이것을 잡아야한다.

+0

정확합니다. ModelState.IsValid는 false입니다. 그러나 오류 메시지는 그다지 도움이되지 않습니다. 나는 "당신은 십진법 필드에 문자열을 넣을 수 없습니다."와 같은 더 친숙한 메시지를 원합니다. 그것은 일종의 유효성 검증을 수행하기 위해 실제로 양식 값을 가져야 만하는 것 같습니다. –

+0

아니요, 양식에서 값을 가져올 필요가 없습니다. 사용자가 제출 한 값은 ModelStateCollection에 있습니다. 특정 오류가 있습니다. –

+0

좋아, ModelStateCollection에는 비어있는 ErrorMessage와 Exception ...이 있습니다. InnerException을 몇 번 드릴 다운하면 유용한 정보가 나타납니다. 물론, 가장 유용한 메시지는 가장 안쪽의 메시지가 아니라 가장 바깥 쪽의 메시지입니다. * 한숨 * –

관련 문제