Я занимаюсь разработкой приложения ASP.NET MVC 3, в котором используются jQuery Globalization и jQuery UI Slider .
Я локализую это приложение на португальский из Бразилии (pt-BR), и оно также поддерживает английский язык.
Проблема в том, что когда я меняю язык на португальский, все значения модели float
разделяются запятой (,), например, 7,7. Затем я пытаюсь установить начальное значение ползунка, но он принимает значение только с точкой (.), Как 7.7.
Чтобы преодолеть такую ситуацию, я делаю это:
$.CreateSlider("#sliderHeight", "#Height", @Model.Height.FormatValue(), 0, 2.5, 0.01);
FormatValue - это метод расширения:
public static string FormatValue(this float value)
{
return value.Value.ToString().Replace(",", ".");
}
Вы видите, что мне нужно заменить разделитель запятыми на разделитель точек, чтобы я мог установить значение ползунка jQuery.
Затем я должен использовать jQuery Globalization, чтобы отобразить правильное значение в пользовательском интерфейсе следующим образом:
$(textBox).val($.global.format(ui.value, 'n2'));
Это работает как минимум ...
Мой вопрос:
Есть ли лучший или стандартный способ сделать это?
Дело в том, что значения модели приходят так, как они должны, то есть, когда я переключил культуру на pt-BR, числа приходят (,) с разделителями. Это правильно с моей точки зрения. Ограничение заключается в том, как jQuery Slider получает значение.
Просто для дополнения: если бы я попытался передать значения так, как они поступают из @Model
, у меня было бы что-то вроде этого, которое, очевидно, сломалось бы (поскольку значения параметров сами разделены запятыми):
$.CreateSlider("#sliderHeight", "#Height", 7,7 , 0, 2.5, 0.01);