2012-12-20 1 views
1

ASP.Net 웹 API 응용 프로그램을 개발 중이며 다른 클라이언트에 대해 REST API를 노출하고 있습니다. 사용자의 JSON 파일을 가져 와서 데이터 모델 클래스로 변환 할 때 문제가 있습니다. 내 JSON은 아래와 같습니다.JSON의 속성에 대한 숫자 서식 만 허용

{"engagementid":1,"clientname":"fsdfs","myno":"23,45","address1":"fsd","address2":"fsdfs","city":"fsdfs","zip":"fsdf","info":"fsdfs","country":"fsdfs","currency":"NOK"} 

내 "myno"가 문자열로 전송 된 것을 볼 수 있습니다. 그러나 내 서버 데이터 모델에서 "myno"는 이중 값입니다. 그래서 여기서 "myno"의 값을 "23,45"로 보내면 내 모델의 MyNo 속성에 2345로 할당됩니다.이 때문에 번호가 변경되었음을 알 수 있으므로 잘못되었습니다. 잘못된 전환. 필요한 것은이 변환을 제한하는 것입니다. 내 말은, "myno"속성에 문자열을 보내는 경우 Client에 오류를 보내려고합니다. 내 서버 데이터 모델에서 이중 값이기 때문에이 속성에 대해 클라이언트의 숫자 만 허용하려고합니다. 그래서, 나는 이것을 좋아한다.

{"myno":2345} //correct 
{"myno":"2345"} //wrong. I want to send a error to user by saying, "We only accept Numbers for this value" 

어떻게하면됩니까?

업데이트 : 내 서버 모델에서 int를 사용하면이 문제가 해결됩니다. 내 말은, 클라이언트가 내 모델에서 int로 표현 된 속성에 문자열을 보내면 int to string 변환을 수행 할 수 없다는 오류로 사용자에게 알려줍니다.

답변

0

맞는지 여부는 확실하지 않습니다. 나는 나의 경험에 따라 나의 제안을 말하고있다. 사용자 지정 유효성 검사 특성을 만들고 데이터의 데이터 형식을 검사 할 수없는 이유는 무엇입니까?

public class IsNumberAttribute : ValidationAttribute 
{ 

    protected override ValidationResult IsValid(object value, ValidationContext context) 
    { 
     if(value.GetType() != Int) 
      return new ValidationResult("Only Numbers Allowed"); 
     return null; 
    } 
}