我在表单中有一个简单的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)
答案 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