2012-08-06 4 views
6

MVC 3 응용 프로그램에서 작업하고 있습니다.기본값을 변경하는 방법 "필드가 숫자 여야합니다."

[Required(ErrorMessageResourceName = "ListingItemPriceRequired", ErrorMessageResourceType = typeof(ErrorMessages))] 
    [Display(Name = "DisplayListingItemPrice", ResourceType = typeof(Display))] 
    [Range(1, 500000000, ErrorMessageResourceName = "ListingItemPriceNotWithinRange", ErrorMessageResourceType = typeof(ErrorMessages))] 
    public double Price { get; set; } 

을 아직도, 나는 "342"와 같은 일부 후행 공백으로 수의 값을 입력 할 때, 나는 "필드를 기본 메시지가 다음과 같이 모델의 필드 중 하나는 유형 두 배이며 정의 가격은 숫자 여야합니다. "

Price 입력 필드의 유효성 검사 속성조차도 "data-val-number"와 같은 값을 갖습니다.

감사합니다.

답변

4

기본 메시지는 문자열 리소스로서 프레임 워크 깊숙이 구워집니다. 문자열 값을 double 유형으로 바인드 할 때 기본 모델 바인더에 의해 추가됩니다. 따라서이 기본 메시지를 변경하려면 사용자 정의 모델 바인더를 작성할 수 있습니다. 내가 그냥 말을 쉽게 발견 https://stackoverflow.com/a/7836093/29407

+0

감사합니다. 각 데이터 유형마다 모델 바인더가 있습니까? btw, 블로그있어? – Bill

+3

커스텀 모델 바인더를 구현했지만 클라이언트 측에서는 여전히 기본 문장 인 동일한 문장이 표시됩니다. 클라이언트 측에서도 다른 메시지를 삽입하는 방법은 무엇입니까? 감사합니다. – Bill

3

: 여기에 같은 문제가있는 날짜 시간 유형에 대해 쓴 예입니다

[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")] 
+0

이것은 훨씬 간단한 방법입니다. – Sprintstar

14

당신이 일의 바로 눈에 거슬리지 검증 측면을 변화와 확인을 경우는, 당신은 항상 당신의 자신의 JQuery와 유효성 검사 속성을 제공 할 수 있습니다 :

@Html.TextBoxFor(model => model.Price, new Dictionary<string, object>() { { "data-val-number", "Price must be a valid number." } }) 

을 또는 MVC가 대체로 간단하게되는 속성 이름에 대시와 밑줄이 다음

@Html.TextBoxFor(model => model.Price, new { data_val_number = "Price must be a valid number." }) 
+0

굉장한 해결책 @ScottE, 사실상 전체 인터넷을 검색했지만 어떤 재발견 해결책도 찾지 못했습니다. 이것은 잘 작동합니다. 고맙습니다...!!!!! –

관련 문제