我有一个必须使用德语的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));
})
;
我怎样才能让这个用德语工作?一切看起来都对我不错。
答案 0 :(得分:0)
在德语中,小数点用逗号表示,千位分隔符是句号/句号。所以11.3是11,300%,或113.如果有人要求德国人输入一个百分比,他们将输入11,3,这应该被正确解析。如果您想以相同的方式使其工作,无论国家/地区如何,您都可以说Decimal.TryParse(percentageString, NumberStyles.Number, CultureInfo.InvariantCulture, out percentage)
。