【问题标题】:Why doesn't my Input of type=number show a decimal when used with ASP.NET MVC?与 ASP.NET MVC 一起使用时,为什么我的 type=number 输入不显示小数?
【发布时间】:2017-04-13 12:27:09
【问题描述】:

我正在尝试在 MVC 中使用输入数字,它正确地接受逗号(我在以逗号作为小数分隔符的文化中)并且 MVC 使用我制作的自定义活页夹接受它。该值已正确保存在数据库中,并返回。

问题是,当将十进制值(看起来像 0.231)传递给数字控件时,我猜它试图用逗号将其格式化为我的文化并且不起作用,所以什么都没有出现。

活页夹在返回到服务器时工作,但在返回到控件时是否需要其他东西才能在返回到页面时工作?

我在剃刀视图中的控制:

@Html.EditorFor(model => model.DecimalValueForExample, new { htmlAttributes = new { @class = "form-control", @type = "number", @step = "any", @min = "0.001", autocomplete = "off" } })

我在视图模型中的属性:

        [Display(Name = "DecimalValueForExample", ResourceType = typeof(Properties.Resources))]
        [DisplayFormat(DataFormatString = "{0:0.###}", ApplyFormatInEditMode = true)]
        [Range(0.001, double.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Properties.Resources))]
        [Required]
        public decimal DecimalValueForExample{ get; set; }

【问题讨论】:

标签: c# html asp.net-mvc input razor


【解决方案1】:

这在过去一直是浏览器合规性问题,并且支持级别因浏览器和操作系统而异。 我发现的最后一张图表在 Chrome 上落后了大约 12 个版本,当时它在 Windows 上不支持逗号。 HTML5 number inputs – Comma and period as decimal marks

也出现了一些 JS 变通方法, html tag input of type=”number” and culture based decimal separator

【讨论】:

  • 我现在正在使用opera,输入数字时接受逗号,我认为问题是当它返回时接受.从十进制数。
  • 您可能想尝试将“lang”属性添加到该输入元素以帮助浏览器。我通常手动编写大部分表单元素,只填充模型中的值部分,以及拆分这些类型的输入,这样它们就不必逐步完成所有组合
  • 我对 lang="fr-CA" 有信心,什么都没有改变……真是令人沮丧,我可以保存 1.1,我可以保存 1,1!但是从不显示返回的小数点。 :(( 我想我将不得不依赖 jquery-ui 微调器。在 2017 年仍然为现代浏览器和现代 html 5 控件中的小数分隔符而战,这真是不可思议。
【解决方案2】:

没有任何效果,尤其是跨多个浏览器。所以答案是使用微调器控件,我使用http://www.virtuosoft.eu/code/bootstrap-touchspin/

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多