MVC C# DateTime и десятичное число не будут принимать ввод - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь создать небольшое веб-приложение с шаблоном MVC в C#.

У меня есть следующие 2 свойства.

        [DataType(DataType.Currency)]
        [Column(TypeName = "money")]
        public decimal Price { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime Date { get; set; }

Вид имеет следующие поля.

    <div class="form-group">
        @Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
        </div>
    </div>

Однако, если я пытаюсь ввести дату, она устанавливает 1/1/0001, которая является значением по умолчанию, вместо даты, которую я выбрал в указателе даты.

Для десятичной дроби она вообще не принимает десятичные дроби (ни 3,50, ни 3,50). Я должен заполнить целое число (по крайней мере, оно работает с теми, но все же это не то, что я хочу).

Я использую скрипт globalize, указанный в учебнике MVC Microsoft.

   @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")

        <script src="~/Scripts/globalize/globalize.js"></script>
        <script src="~/Scripts/globalize/cultures/globalize.culture.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>
        <script>
            $.validator.methods.number = function (value, element) {
                return this.optional(element) ||
                    !isNaN(Globalize.parseFloat(value));
            }
            $(document).ready(function () {
                Globalize.culture('@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)');
            });
        </script>
        <script>
            jQuery.extend(jQuery.validator.methods, {
                range: function (value, element, param) {
                    var val = Globalize.parseFloat(value);
                    return this.optional(element) || (
                        val >= param[0] && val <= param[1]);
                }
            });
            $.validator.methods.date = function (value, element) {
                return this.optional(element) ||
                    Globalize.parseDate(value) ||
                    Globalize.parseDate(value, "yyyy-MM-dd");
            }
        </script>
    }

Я не знаю, имеет ли это значение, но на всякий случай.

В файле web.config я установил свою культуру.

    <globalization culture="nl-NL" uiCulture="nl-NL" />

Я пытался найти решения для inte rnet, но до сих пор мне не удалось заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...