NumericTextBox的值错误

时间:2013-10-11 20:06:17

标签: kendo-ui kendo-asp.net-mvc kendonumerictextbox

我在表单中有一个简单的NumericTextBox。

问题是我的值总是乘以100.所以如果我从8.5开始,它将显示850(并保存850),下次显示85000等。

另外,如果我尝试输入小数(8.5),则会失败。这个值是正确的:

$("#TimeEstimate").data("kendoNumericTextBox").value()

我该如何解决这个问题?

<%= Html.Kendo().NumericTextBox<decimal>()
    .Name("TimeEstimate")
    .Decimals(2)
    .Format("d2")
%>

发送给控制器:

$.ajax({
    type: "POST",
    url: "/Admin/doModify",
    data: $('#myForm').serialize(),
    dataType: "text",
    success: function (data) {},
    error: function (err) {}
});

谢谢

注意

如果我像这样.Value(Model.TimeEstimate/100)设置值,它将显示85而不是8.5(8显示为8)

1 个答案:

答案 0 :(得分:1)

我在Kendo UI和十进制值方面遇到了类似的问题。事实证明,服务器端使用逗号作为小数分隔符在文本框中呈现初始值,因为线程文化,而Kendo期望一个句点作为小数分隔符。

确保服务器端的Kendo文化和CurrentCulture都已同步。

这就是我为解决问题而采取的措施。

在我的MVC应用程序的布局页面上,在我包含Kendo脚本的行之后,我包含了这个代码段:

<script>
  kendo.culture("es-DO");
</script>

在应用程序的Global.asax.cs文件中,我包含了这个在应用程序的每个请求上执行的方法:

protected void Application_BeginRequest(object sender, EventArgs e) {
  var culture = new CultureInfo("es-DO", false);
  Thread.CurrentThread.CurrentCulture = culture;
  Thread.CurrentThread.CurrentUICulture = culture;
}

编辑:有多种方法可以设置应用程序的文化和UI文化:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx。此外,从.NET Framework 4.5开始,您可以在初始化时设置DefaultThreadCurrentCulture和DefaultThreadCurrentUICulture。

完成所有这些操作将确保Kendo UI框架和服务器对数千和小数使用相同的分隔符。

现在,如果您只需要在应用程序上使用单一区域性,此解决方案就可以运行。任何人都可以随意编辑此答案以添加多文化解决方案。

编辑: Telerik自己有一份指南,可以在服务器端和客户端使用相同的文化:http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/globalization