2013-10-15 8 views
6

Mam problem z lokalizacją. W Brazylii używamy przecinka jako separatora dziesiętnego zamiast kropki. Na przykład:Dozwolone kropki i przecinki w liczbach, nie tylko po przecinku

500,00 
120,21 
0,0001 

znalazłem rozwiązanie tego problemu w oparciu o tę odpowiedź: „”. MVC 3 jQuery Validation/globalizing of number/decimal field

Ale tutaj, w Brazylii, możemy również użyć w liczbach, jak:

100.000.000,00 
11.125,23 

I jeszcze jedno:

10.000 <> 10,000 

Pierwszym z nich jest dziesięć tysięcy, a drugi jest po prostu dziesięć.

Użycie wtyczki globalizacyjnej, gdy użytkownik wpisze ".", Pokazuje błąd sprawdzania poprawności. Próbowałem użyć adnotacji danych DisplayFormat, ale nie działało to zgodnie z oczekiwaniami ... Aby "rozwiązać" ten problem, używam javascript do ręcznego ustawiania i usuwania "." z liczb na boisku, ale jest to bardzo problematyczne, kiedy musimy coś zmienić (i jestem pewien, że jest to jedno z najgorszych podejść, jakie mogłem zastosować ...). Czy macie pojęcie, jak postępować w tej sprawie?

Jeszcze jedno pytanie: mogę utworzyć segregator modelowy (lub zmodyfikować istniejący), aby zaakceptować ten format liczbowy?

Odpowiedz

10

Właśnie znalazłem tę odpowiedź.

Fixing binding to decimals

To działało idealnie w moim scenariuszu. Ten facet rozwiązał dokładnie ten sam problem, który miałem!

miałem tylko zmodyfikować kilka linijek kodu, ale najważniejszą częścią była ta linia:

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder()); 

zmodyfikowałem go przyjmować wartości pustych.