【问题标题】:how to fix kendo NumericTextBox format如何修复剑道 NumericTextBox 格式
【发布时间】:2019-07-31 12:55:05
【问题描述】:

我正在使用剑道 (v. 2019.2.514) 构建应用程序。而且我对 NumericTextBox 的数字格式有奇怪的错误。

此时我正在创建一个表单来修改产品。问题是,我的价值观得到了不同的结果。

值作为浮点数存储在数据库中。在模型中也是如此。 而且我很确定问题出在格式上,因为当 value 是自然数时很好,但是:

(第一种控制格式)
0.1 等于 1
0.05 等于 5

(第二种格式)
1.2 得到 120000004768372(这意味着原始值乘以 1e+14)
0.3 给出 300000011920929 (* 1e+15)

这是我的 2 种 NumericTextBox 格式

@(Html.Kendo().NumericTextBox<float>().Name("Weight").Min(0).Value(Model.Weight).Format("#.## kg")
                    .Placeholder($"{Language.translate("Weight")} (kg)").HtmlAttributes(new { validate = true })
                )

@(Html.Kendo().NumericTextBox<float>().Name("upTo7").Min(0).Format("#.## €").Value(Model.Price)
                    .Placeholder(Language.translate("Price up to x days").Replace("x", "7")).HtmlAttributes(new { validate = true })
                )

我已经尝试过 #.00、n2 之类的格式,但没有什么适合我

我只想正确显示这些数字

【问题讨论】:

    标签: asp.net-mvc-5 kendo-asp.net-mvc


    【解决方案1】:

    问题似乎出在您的模型上,因为我刚刚尝试了以下代码并且它工作正常:

    @(Html.Kendo().NumericTextBox<float>().Name("Weight").Min(0).Value(0.05f).Format("#.## kg")
                        .Placeholder("Weight (kg)").HtmlAttributes(new { validate = true })
                    )
    
    @(Html.Kendo().NumericTextBox<float>().Name("upTo7").Min(0).Format("#.## €").Value(1.2f)
                        .Placeholder("Price up to 7 days").HtmlAttributes(new { validate = true })
                    )
    

    输出:

    0.05 kg
    1.2 €
    

    我建议在您的数据库中使用decimal 数据类型而不是float,因为近似数值数据类型不存储指定的确切值。详情请见Difference between numeric, float and decimal in SQL Server

    【讨论】:

    • 我在数据库中从浮点数修改为十进制(10,2),也在代码中。我用调试器检查我的模型,它有正确的值,如 2.5、10.5,但 NumericTextBox 显示值 250,00 和 1050,00,所以它仍然乘以 100。另一方面,看看这个隐藏字段的屏幕截图prnt.sc/p2mr9j 似乎来自模型的值是正确的。我尝试@Prasanth-Sankar 回答添加十进制属性,但它没有任何改变。
    • @Jarzyn 你试过改变剑道文化吗:&lt;script&gt; kendo.culture("en-US"); &lt;/script&gt;
    • 它是默认选择的,但我在准备好的 jQuery 文档中添加了它,它也没有任何改变。 prnt.sc/p2nois
    • 我已将文化更改为pl-PL,它解决了问题,我知道为什么...我标记你的答案,谢谢
    【解决方案2】:

    你可以试试this..NumericTextBox

    @(Html.Kendo().NumericTextBox<decimal>().Name("Weight").Min(0).Value(0.05f).Format("#.## kg")
     .Decimals(3)
                        .Placeholder("Weight (kg)").HtmlAttributes(new { validate = true })

    并添加 Decimal 属性以显示文本框中需要看到多少小数位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多