kendo UI 数字文本框文化翻译不正确

kendo UI numeric textbox culture not translating correctly

我在我的 MVC 站点上使用绑定到对象的数字文本框,例如:

@Html.Kendo().NumericTextBoxFor(m =>  m.Latitude).Decimals(8).Min(-90).Max(90).Step(.01)

Latitude 对象只是一个 属性,看起来像:

public double? Latitude { get; set; }

我的网站可以在 2 种不同的文化中显示,这两种文化都从同一个数据库中获取数据。所以保存在数据库中的值看起来像“48.33900606”等。这在我的 en-US 网站上一切正常,但在我的 de-DE 网站上,该值在编辑时根本不显示。如果我输入“48,33900606”,它工作正常并且我可以保存并且它像它应该的那样保存为双精度。如果我 'edit',在数字文本框加载该值的地方,它只是空白。如果我单击该框,我可以看到没有逗号和句号的“4833900606”,但是当我单击离开时它变为 90,00(因为这是我在上面列出的最大值)。无论如何调和这个?

在de-DE工作时需要设置culture

添加到您的页面

 <script src="kendo.culture.de-DE.js"></script>

设置文化

 kendo.culture("de-DE");

Kendo reference

Tutorial

更新

在那种情况下,我建议在将号码发送到 Kendo 小部件之前格式化号码

<input id="txtLatitude" name="Latitude">
<script>
    $("#txtLatitude").kendoNumericTextBox({
        value: kendo.toString(Model.Latitude, "n8", "de-DE"),
        min: -90,
        max: 80,
        step: 0.01,
        decimals: 8
    });
</script>

虽然这个问题有点老,但它可能适用于一些在最新浏览器上使用 Kendo NumericTextbox 的人。您需要在 NumericTextbox 声明中添加以下代码以覆盖 type="numeric" 属性:

.HtmlAttributes( new { type="text" } )

我刚刚发现这是由于输入值的类型属性在某些浏览器版本中被浏览器验证而发生的(我在 Chrome 56.0.2924.87 上得到了这个)。此浏览器设置似乎在验证期间弄乱了值,我遇到了同样的问题,数字文本框为空白

在加载数字文本框期间,我收到一条控制台警告,指出:

The specified value "5,00" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+.\d+|.\d+)([eE][-+]?\d+)?