Использование проверки клиент / сервер ASP.NET MVC со свойством DateTime - PullRequest
0 голосов
/ 22 апреля 2019

Это должно быть довольно просто, так как я думаю, что это должно быть очень распространенной проблемой, и я, вероятно, не первый разработчик ASP.NET MVC, столкнувшийся с этим.

Я использую ASP.NET MVC Client /Проверка сервера с использованием аннотаций данных и jquery.validate.

У меня есть модель представления со свойством DateTime:

public DateTime SomeDate { get; set; }

В представлении у меня есть форма со свойством:

@Html.TextBoxFor(vm => vm.SomeDate)

Несмотря на то, что в модели представления нет явной аннотации к свойству, jquery.validate требует, чтобы оно было обязательным (так как это тип, не допускающий значения NULL), а также допустимой датой.

У меня нет проблем с необходимым полем (на самом деле, это действительно так), хотя я знаю, что могу избежать этого, сделав свойство обнуляемым.Проблема в том, что я использую формат даты моей культуры (dd/MM/yyyy), но поскольку jquery.validate пытается вызвать:

date: function(value, element) {
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
}

, он считает ее недопустимой датой и жалуется (т. Е. «Date (»)25/12/2018 ") недействительно"), поэтому он не позволяет отправить форму.

Я пытался использовать:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]

в моей собственности, но это неКажется, что это никак не влияет на саму проверку.

Я мог бы использовать строковое свойство вместо DateTime и создать свою собственную пользовательскую проверку (клиент и сервер), но так как это свойство на самом делеDateTime, мне кажется, что это должен быть какой-то способ использования стандартной проверки ASP.NET MVC без необходимости использования DateTime на всех моих моделях представления.На самом деле мне даже не нужна проверка для моего DateTime, потому что пользователю предлагается средство выбора даты, но я хочу иметь возможность использовать проверку клиента для других свойств, и как только я включу сценарии jquery.validation,проверка даты добавляется автоматически, вызывая эту проблему.

Итак, я ищу способ:

  • Использовать свойство Datetime в моих классах модели представления и показатьэто в представлении в формате dd/MM/yyyy
  • Использовать проверку клиента для других свойств (необязательно для DateTime), то есть возможность использовать проверку клиента по крайней мере в других свойствах (если не для DateTime properties)

Лучшим решением было бы, если есть способ (должен быть?) Сообщить jquery.validate формат даты, в котором он должен проверять даты.

Вторым лучшим вариантом будет способ по крайней мере отключить проверки даты на стороне клиента, не отключая проверку клиента вообще и не отказываясь от использования DateTime в моей модели представления.В крайнем случае следует использовать строки вместо DateTime и создать собственную проверку, но я думаю, что это излишне.

Я думаю, что любой разработчик, не использующий стандартный формат синтаксического анализа даты в javascript, должен был столкнуться с этой проблемой, ноЯ не нахожу способ решить проблему без использования обходных путей, которые, честно говоря, не должны быть необходимыми для такой распространенной и простой ситуации.

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