2017-02-09 10 views
-2

Im triying для проверки поля datetime с inobstrusive validation.Насколько корректно проверять DateTime в MVC Unobtrusive Validation?

Если вход 01/01/2017 10:00 тогда я получаю

Поле [fieldId] должна быть дата.

Однако поле должно быть не датой, а датой.

Параметр устанавливается, как это в моей модели:

[Display(Name = "Start")] 
    [DataType(DataType.DateTime)] 
    public DateTime start { get; set; } 

Я не был в состоянии correctally проверки поля ввода с датой и времени.

Как это сделать?

+0

Код, который вы показали, будет ** ** не приводит к ошибке проверки на стороне клиента для значения '01.01.2017 10:00 '(если вы не сделали что-то вроде переопределенного метода' date' в '$ .validator'). Если вы получаете ошибку на стороне клиента, то это потому, что вы ввели значение, которое не является допустимой датой. –

+0

Кажется, что это ошибка культуры, даже я установил правильную культуру в web.config, проверка клиента ожидает дату MM/dd/yyyy, а не локализуемую культуру. –

+0

Культура на сервере не влияет на браузер. И по умолчанию 'jquery.validate.js' проверяет даты в формате MM/dd/yyyy. Но '01/01/2017 10: 00' действительно проходит либо в формате' MM/dd/yyyy', либо 'dd/MM/yyyy'). Если, с другой стороны, ваш ввод говорит '20/1/2017' (20 января), тогда он будет генерировать ошибку на стороне клиента. Если это так, вам нужно просто перенастроить валидатор. Но это не то, о чем вы спрашиваете, так что если это то, что вы переживаете, отредактируйте вопрос, и я могу дать вам ответ на его решение. –

ответ

1

Имейте в виду, что указание DataType не выполняет проверку. Все, что он делает, - это дать подсказку браузеру о том, какой тип ввода ожидается. Чтобы проверить, попробуйте добавить регулярное выражение валидатора, например, так:

[RegularExpression(@"^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d$", ErrorMessage = "Date must be in the format of : dd/mm/yyyy hh:mm"] 
[Display(Name = "Start")] 
[DataType(DataType.DateTime)] 
public DateTime start { get; set; } 

 Смежные вопросы

  • Нет связанных вопросов^_^