2014-07-22 4 views
2

낸시에 샘플 앱이 있으며 요청 유효성 검사에 문제가 있습니다.낸시 및 요청 유효성 확인

FluentValidator에 BindAndValidate 확장명을 사용하고 있습니다. 와

public class User 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

그리고 모듈 : 예를 들어 그래서 내가 모델이

Post["/create-user"] = m => this.BindAndValidate<User>()); 

을 그리고 문제가있는 경우 매개 변수 이름을 가진 클라이언트 응용 프로그램 호출 모듈 : "foo는, 나이 :"일부 문자열 ", 다음 낸시 던져 예외 :

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: some-string is not a valid value for Int32. ---> System.FormatException: Input string was not in a correct format. 

여기 매개 변수에 의해 예외에 대한 해결 방법입니다 ("속성의 시대에 대한 올바른 아니었다 매트 ")?

감사합니다 당신이 나이가 INT가 있는지 확인하려고하고 검증에 다음의 경우 수 바인딩하기 전에

+0

오늘은 여기에 잘 설명되어 있습니다. https://github.com/NancyFx/Nancy/wiki/Nancy-and-Validation을 참조하십시오. –

답변

-2

. 이 같은 것 :

int age; 
bool isInt = int.TryParse(Request.Form("Age"), out age); 

if (isInt) 
{ 
    this.BindAndValidate<User>(); 
} 

희망이 있습니다.

0

문제는 바인더가 실패하여 유효성 검사기가 실행되지 않는다는 것입니다. 당신은 바인딩 오류를 무시하도록 nancy에게 말할 수 있지만, 정상적으로하지는 않습니다 (기본적으로 첫 번째 오류에서 바인딩을 중단합니다). 그러면 유효성 검사 단계가 실행되지만 확인되었지만 단순히 바인더로 설정되지 않은 속성에 대해 불평 할 수 있습니다.

Newtonsoft의 오류 처리 기능을 사용하는 자체 BodyDeserializer를 제공하여 바인딩이 첫 번째 오류에서 중지되지 않도록 할 수 있습니다. Handle multiple binding errors from ModelBindingException in NancyFX when binding to JSON in Request.Body