Я работаю над приложением MVC4, где есть поле с маской данных, например 000000,00
. Поскольку основной культурой проекта является pt-BR, это правильно и работает, как ожидалось.
Проблема в том, что некоторые из наших разработчиков имеют свои культуры, установленные на английском языке, и, отправляя это на сервер, установленный как en-US, возникает ошибка проверки, потому что метод ожидает 000000.00
вместо 000000,00
.
Я подумал о том, чтобы сделать js-исправление, чтобы проверить язык браузера и соответствующим образом изменить маску, но если браузер установлен на английский, а сервер на португальский, он потерпит неудачу (некоторые из наших тестеров находятся в этом точном сценарии).
Мой план B - использовать DataAnnotation, чтобы сервер знал культуру, которую он должен использовать при проверке ввода.
[MagicValidation('pt-BR'))]
public virtual double? myProp { get; set; }
Учитывая, что я не могу предположить, что сервер будет на одном языке, мои сомнения:
Правильно ли мой подход?
Есть ли другой более простой способ сделать это?
Если я на правильном пути, есть ли уже существующая аннотация, которая уже делает это?
Заранее благодарим за внимание
Я закончил использование этого настраиваемого связующего NumberFormatInfo
, используя только NumberFormatInfo
в качестве второго параметра Convert.ToDouble()
(вместо CultureInfo
). Здесь используется NumberFormatInfo
:
readonly NumberFormatInfo NumberFormatInfo = new NumberFormatInfo()
{
NumberDecimalSeparator = ",",
NumberGroupSeparator = ".",
NumberGroupSizes = new int[] { 3 }
};
Остальное - это просто копия/вставка связанного решения
Вы пытались заставить культуру в свой web.config следующим образом:
<system.web>
<globalization uiCulture="pt" culture="pt-BR"/>
</system.web>