Определение CultureInfo свойства с помощью DataAnnotation

1

Я работаю над приложением MVC4, где есть поле с маской данных, например 000000,00. Поскольку основной культурой проекта является pt-BR, это правильно и работает, как ожидалось.

Проблема в том, что некоторые из наших разработчиков имеют свои культуры, установленные на английском языке, и, отправляя это на сервер, установленный как en-US, возникает ошибка проверки, потому что метод ожидает 000000.00 вместо 000000,00.

Я подумал о том, чтобы сделать js-исправление, чтобы проверить язык браузера и соответствующим образом изменить маску, но если браузер установлен на английский, а сервер на португальский, он потерпит неудачу (некоторые из наших тестеров находятся в этом точном сценарии).

Мой план B - использовать DataAnnotation, чтобы сервер знал культуру, которую он должен использовать при проверке ввода.

[MagicValidation('pt-BR'))]
public virtual double? myProp { get; set; }

Учитывая, что я не могу предположить, что сервер будет на одном языке, мои сомнения:

Правильно ли мой подход?
Есть ли другой более простой способ сделать это?
Если я на правильном пути, есть ли уже существующая аннотация, которая уже делает это?

Заранее благодарим за внимание

Теги:
data-annotations
asp.net-mvc-4
cultureinfo

2 ответа

0
Лучший ответ

Я закончил использование этого настраиваемого связующего NumberFormatInfo, используя только NumberFormatInfo в качестве второго параметра Convert.ToDouble() (вместо CultureInfo). Здесь используется NumberFormatInfo:

readonly NumberFormatInfo NumberFormatInfo = new NumberFormatInfo()
{
    NumberDecimalSeparator = ",",
    NumberGroupSeparator = ".",
    NumberGroupSizes = new int[] { 3 }
};

Остальное - это просто копия/вставка связанного решения

0

Вы пытались заставить культуру в свой web.config следующим образом:

<system.web>
    <globalization uiCulture="pt" culture="pt-BR"/>
</system.web>
  • 0
    Это уже делается и, к сожалению, не решает мою проблему
  • 0
    Пожалуйста, попробуйте обновленную версию моего ответа.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню