Ввод числа HTML 5 с MVC не показывает десятичное число

Я пытаюсь использовать входной номер в 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; }

person Nicolas Belley    schedule 13.04.2017    source источник
comment
Я думаю, что html5 <input type="number" ...> лучше всего работает с целыми числами, а не с числами с десятичной дробью. Попробуйте на w3schools: w3schools.com/html/html_form_input_types.asp   -  person mortb    schedule 13.04.2017
comment
Он отлично работает с десятичным числом, я только что сохранил пример здесь: w3schools.com/code /tryit.asp?filename=FELCCBVINC0P   -  person Nicolas Belley    schedule 13.04.2017
comment
Да, ты прав. Я пропустил шаг = любая часть.   -  person mortb    schedule 13.04.2017


Ответы (2)


В прошлом это была проблема совместимости браузеров, и уровни поддержки различаются между браузерами и ОС. Последняя диаграмма, которую я нашел, отстает примерно на 12 версий в Chrome, который в то время не поддерживал запятые в Windows. Числа HTML5 — запятая и точка в виде десятичных знаков

Были также некоторые обходные пути JS, которые также появились, Ввод HTML-тега type="number" и десятичного разделителя на основе культуры

person Mad Myche    schedule 13.04.2017
comment
В настоящее время я использую Opera, и запятая принимается при вводе числа, я думаю, проблема в том, что когда он возвращается, у него есть проблема с принятием . от десятичного числа. - person Nicolas Belley; 13.04.2017
comment
Вы можете попробовать добавить атрибут lang к этому элементу ввода, чтобы помочь браузеру. Обычно я пишу большинство своих элементов формы вручную и заполняю только часть значения из модели, а также разделяю эти типы входных данных, чтобы им не приходилось проходить через все комбинации. - person Mad Myche; 13.04.2017
comment
Я верил с lang=fr-CA, ничего не изменилось... Это действительно расстраивает, я могу сохранить 1.1 и могу сохранить 1,1! Но десятичная дробь по возврату никогда не показывается. :(( Я думаю, мне придется полагаться на jquery-ui spinner. Это действительно что-то сверхъестественное в 2017 году, все еще борющееся за десятичный разделитель в современном браузере и современные элементы управления html 5. - person Nicolas Belley; 13.04.2017

Ничего не работало, особенно в нескольких браузерах. Таким образом, ответ состоял в том, чтобы использовать элемент управления счетчиком, я использую http://www.virtuosoft.eu/code/bootstrap-touchspin/

person Nicolas Belley    schedule 09.05.2017