使用C#和jQuery本地化百分比

时间:2015-03-30 14:08:45

标签: c# jquery

我有一个必须使用德语的ASP.NET MVC应用程序。

string percentageString = form["percentage"]; // pretend "11.3" is the value sent from the view;
decimal percentage = 0;
if (Decimal.TryParse(percentageString, out percentage))
{
  if ((percentage >= 0) && (percentage <= 100))
    model.Percentage = percentage * (decimal).01;
  else
    errors.Add("The percentage must be between 0 and 100.");
}
else
  errors.Add("Please enter a percentage.");

我的挑战是,用英语,上述作品。然而,在德语中,它失败了。发生第一个错误(百分比必须介于0和100之间)。问题是当Decimal.TryParse发生时,percentage值为113。我怀疑它与跨文化使用逗号和小数有关。然而,我不知道如何解决这个问题。

我在视图中使用jQuery滑块来设置此值。目前,它看起来像这样:

<input id="percentageSlider" name="percentageSlider" data-slider-id="percentageRateSlider" type="text" data-slider-min="0" data-slider-max="100" data-slider-step="0.1" value="@Model.Percentage" />
<input id="percentage" name="percentage" class="form-control" type="text" />

...

var percentage = @Convert.ToString(Model.Percentage.Value, System.Globalization.CultureInfo.InvariantCulture);
var percentageSlider = $('#percentageSlider').slider({
  formatter: function (value) {
    return value.toFixed(1) + '%';
  },
  value: percentage,
  precision: 1
}).on('slide', 
  function (s) {
    $('#percentage').val(s.value.toFixed(1));
  })
;

我怎样才能让这个用德语工作?一切看起来都对我不错。

1 个答案:

答案 0 :(得分:0)

在德语中,小数点用逗号表示,千位分隔符是句号/句号。所以11.3是11,300%,或113.如果有人要求德国人输入一个百分比,他们将输入11,3,这应该被正确解析。如果您想以相同的方式使其工作,无论国家/地区如何,您都可以说Decimal.TryParse(percentageString, NumberStyles.Number, CultureInfo.InvariantCulture, out percentage)