2010-12-29 17 views
5

Używam jquery do sprawdzania poprawności strony klienta wraz z adnotacjami danych. Wszystko działa dobrze, ale chciałbym zlokalizować wiadomość, gdy wartość numeryczna zostanie wprowadzona w polu tekstowym. Ale dla sprawdzania poprawności strony klienta asp.net mvc używa własnego pliku zasobów z kluczem "ClientDataTypeModelValidatorProvider_FieldMustBeNumeric"."Szerokość pola musi być liczbą." po stronie klienta

Jak mogę to zrobić?

Dzięki.

+0

możliwe duplikat [ASP.NET MVC walidacji musi być błąd niestandardowy numer] (http://stackoverflow.com/questions/ 4521254/asp-net-mvc-validation-musi-być-numerem-niestandardowy-błąd) –

Odpowiedz

2

Poszukaj rozwiązania na końcu tej strony:

http://jwwishart.wordpress.com/2010/03/22/custom-server-and-client-side-required-validator-in-mvc-2-using-jquery-validate/

Sprawdziłem to w moim projekcie MVC 3 RTM i działa dobrze.

+0

Zaimplementowałem to, co Justin Wishart napisał w powyższym linku na temat ClientDataTypeModelValidatorProvider. Użyłem Reflectora, aby uzyskać oryginalny kod klasy i wskazałem nowy kod do mojego zasobu lokalizacji. Działa doskonale w ASP.NET MVC 3. –

2

Miałem ten sam problem, ponieważ jestem Włochem, a tutaj liczby dziesiętne są sformatowane za pomocą przecinka zamiast kropki. Tak więc, co w USA wynosi 1,000.12, tutaj jest napisane 1.000,12. Tak właśnie rozwiązałem, po pewnym wyszukiwaniu: MVC3 zawiera już skrypt jquery.validate.js/jquery.validate.min.js i to jest niesamowite.

Następnie dodałem kolejny skrypt - methods-it.js - pobrany z folderu sprawdzania poprawności wtyczki jquery i nieco zmieniony.

jQuery.extend(jQuery.validator.methods, { 
    date: function (value, element) { 
     return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value); 
    }, 
    number: function (value, element) { 
     return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); 
    }, 
    range: function (value, element, param) { 
     var val = value.replace(",", "#").replace(".", ",").replace("#", "."); 
     return this.optional(element) || (val >= param[0] && val <= param[1]); 
    } 
}); 

Ten mały kod dotyczy dat (formatowanie włoskie), liczb zmiennoprzecinkowych i zakresu wartości. Działa świetnie, teraz! Niestety jest to tylko kierunek, a nie rozwiązanie, ponieważ musi być poprawione dla każdego locale.

+0

jQuery.validator jest niezdefiniowany, czego mi brakuje? –

+0

Błąd środowiska wykonawczego Microsoft JScript: Nie można uzyskać wartości właściwości "methods": obiekt ma wartość null lub undefined. Czy czegoś brakuje? – Jorre

0

znalazłem łatwiej po prostu użyć DataAnnotations modelu Widok:

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