kastaneda
@kastaneda

Разделитель дробных чисел в ASP.MVC 3?

Всем привет. Столкнулся с такой проблемой, что если значение в QueryString содержит дробное число, то оно будет «забиндено» в TextBox без учета культуры, например если есть url test.com/?number=1.5, в будет подставлено «1.5», вместо «1,5». При сабмите такой формы произойдет FormatException и мы получим ошибку в ModelState.

Подробнее я описал на Stakoverflow. Как я понял, что средствами MVC нельзя настраивать биндинг с учетом культуры во Views из QueryString-а нельзя. Еще есть сложность, что JavaSrcipt я использовать не могу.

Если кто сталкивался и нашел красивое решение, подскажите пожалуйста.
  • Вопрос задан
  • 2891 просмотр
Пригласить эксперта
Ответы на вопрос 2
Illorian
@Illorian
Front-end разработчик
Ну я вижу самое простое решение — разнести на два параметра. Это реально ведь?
Ответ написан
Комментировать
@Quilin
Full-stack разработчик

Проблема с культурой кажется очень надуманной. Она строится на устаревшем забугорном принципе писать длинные числа с разделителем в виде пробела. Например:

1,000,000.02 - миллион с копейками Но серьезно, кто при заполнении форм так делает? Если же речь о формировании URI - наверное, не самая удачная идея как-то связывать внешний вид параметров с культурой.

У себя в проектах один раз написал ModelBinder для decimal и decimal?, в котором запятые обращаются в точки. Возможно, это не самое элегантное решение на планете, но для дробных чисел оно выглядит вполне адекватным. Этакое забивание гвоздей отверткой заместо микроскопа.

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы