Asp.net mvc 剑道UI数字文本框区域性翻译不正确

Asp.net mvc 剑道UI数字文本框区域性翻译不正确,asp.net-mvc,kendo-ui,kendo-asp.net-mvc,Asp.net Mvc,Kendo Ui,Kendo Asp.net Mvc,我在MVC站点上使用绑定到对象的数字文本框,如: @Html.Kendo().NumericTextBoxFor(m => m.Latitude).Decimals(8).Min(-90).Max(90).Step(.01) 其中Latitude对象只是一个如下所示的属性: public double? Latitude { get; set; } 我的网站可以在两种不同的文化中显示,都是从同一个数据库获取数据。因此,保存在数据库中的值看起来像“48.33900606”,等等。这在我

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

@Html.Kendo().NumericTextBoxFor(m =>  m.Latitude).Decimals(8).Min(-90).Max(90).Step(.01)
其中Latitude对象只是一个如下所示的属性:

public double? Latitude { get; set; }

我的网站可以在两种不同的文化中显示,都是从同一个数据库获取数据。因此,保存在数据库中的值看起来像“48.33900606”,等等。这在我的en-US网站上运行良好,但在我的de-de网站上,该值在编辑时根本不显示。如果我输入'4833900606',它可以正常工作,我可以保存,并且它可以像应该的那样保存为双精度。如果我“编辑”,在数字文本框加载该值的地方,它只是空白。如果我点击该框,我可以看到没有逗号、没有句点的“4833900606”,但当我点击它时,它会变为90,00(因为这是我上面列出的最大值)。是否要协调此问题?

在de中工作时,需要设置区域性

添加到您的页面

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

更新

在这种情况下,我建议在将数字发送到剑道小部件之前对其进行格式化

<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>

$(“#txtLatitude”).kendoNumericTextBox({
值:kendo.toString(Model.Latitude,“n8”,“de”),
最小:-90,
最高:80,
步骤:0.01,
小数:8
});

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

.HtmlAttributes( new { type="text" } )
我刚刚发现,这是由于在某些浏览器版本中,浏览器验证了输入值的type属性(我在Chrome 56.0.2924.87上得到了这一点)。这个浏览器设置似乎在验证过程中弄乱了值,我也遇到了同样的问题,数字文本框为空

在加载numerictextbox期间,我收到一条控制台警告,指出:

指定的值“5,00”不是有效的数字。该值必须匹配 到以下正则表达式: -(\d++\d+。\d++.\d+)([eE][-+]?\d+)


我已经这样做了。例如,当我在de站点的数字文本框中键入数据时,48.606。。。什么也没给我,但48606。。。确实有效,我认为这表明它工作正常。问题只出现在页面加载数据并填充latitude属性时。然后它没有正确显示。我更新了我的答案。我现在没有VS实例,也许你需要在Model.latitude之前添加一个@符号。如果在Model.latitude之前有一个@符号,那么整个控件就无法工作了。此外,我没有使用numerictextbox的javascript版本,而是使用MVC包装器,因此您的更新答案也没有帮助,除非您建议我完全放弃使用MVC包装器。我现在才开始随机工作,我不知道为什么,因为没有任何变化。我将把你的回答标记为答案,因为这是找出如何让它工作的最好方法。谢谢
.HtmlAttributes( new { type="text" } )