2011-02-03 3 views
3

я следовал этот блог here и here.ASP.NET MVC 3 - Клиент-Validation с деньгами поле

У меня есть следующая проблема.

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

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

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

Данное правило работает нормально, то правило MoedaReal работает нормально. После этих правил передаются в порядке, один последнее правило срабатывает:

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

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

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

Мои номера формат accepcted таковы:

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.

ответ

2

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

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

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

  • Написать пользовательские модели связующий
  • Используйте строку вместо десятичной, а затем сделать разбор вручную
+1

Использование строки решить все проблемы , Это не перешло мне в голову! благодаря – Ismael