ASP.NET MVC 3 - проверка клиента с денежным полем - PullRequest
3 голосов
/ 03 февраля 2011

Я следил за этим блогом здесь и здесь .

И у меня возникла следующая проблема.

Одно поле в моей форме - это формат currecy, из Бразилии.Я использую проверку на стороне клиента.Все отлично работает, за исключением одной проблемы.

У меня есть 2 проверки:

[DisplayName("Taxa de adesão")]
[MoedaReal(ErrorMessage = "Taxa deve ser numérico")]        
[Required(ErrorMessage = "Taxa é obrigatório")]
public decimal ValorAdesao { get; set; }

Правило REQUIRED работает нормально, правило MoedaReal работает нормально.После того, как эти правила пройдены нормально, запускается одно последнее правило:

  • Поле Taxa de adesão должно быть числом

Я уже пытался изменить web.config в этой строке:

<globalization culture="pt-br" uiCulture="pt-br" />

Допустим мой формат чисел:

1,00
11,00
111,00
1.111,00
11.111,00
111.111,00
1.111.111,00
1.111.111.111.111,00

Как я могу "обмануть" .NET для принятияэтот формат?Потому что вместо этого ожидается формат DECIMAL.

1 Ответ

2 голосов
/ 03 февраля 2011

Нельзя обмануть подшивку модели по умолчанию.Он просто пытается проанализировать строковое значение запроса в десятичное число, используя культуру, указанную в вашем файле web.config.Таким образом, поскольку вы также используете проверку клиента, между клиентом и сервером может существовать разная культура.Например, браузер может быть настроен на использование en-US и сервера pt-BR, и тогда у вас могут возникнуть проблемы.Вы можете попробовать это:

<globalization culture="auto" uiCulture="auto" />

Это означает, что культура, используемая сервером, будет диктоваться клиентом.Если это не работает, у вас есть несколько других возможностей:

  • Напишите пользовательское связующее для модели
  • Используйте строку вместо десятичной, а затем выполните анализ вручную
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...