2013-08-06 3 views
1

В моей модели просмотра у меня есть свойство DateTime с нулевыми значениями, называемое BirthDate.Asp.net MVC с нулевым значением Проверка состояния модели DateTime

Когда я отправляю недопустимое значение DateTime контроллеру, ModelState.IsValid является ложным, говоря, что BirthDate является недопустимым DateTime.

Как заставить ModelState относиться к недействительным значения DateTime с нулевым значением как к нулевому значению, вместо того, чтобы сделать его недействительным?

+0

ли это смысл? Если пользователь вводит дату, он ожидает, что он будет принят (или отклонен). Если вы просто сохраните их как «null», это может оказаться проблематичным. – Gorgsenegger

+0

Мне нужно это, потому что проверка даты на стороне клиента очень проблематична, особенно если вы используете [google chrome] (http://stackoverflow.com/questions/6906725/unobtrusive-validation-in-chrome-wont-validate-with -dd-мм-гггг) – Catalin

ответ

0

Вы выполняете проверку на стороне клиента, тогда вы не беспокоитесь об этой проверке, если значение даты рождения равно null или пустое, после чего вы возвращаете null.

public class DateFieldAttribute : ValidationAttribute 
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     if (value == null || value == string.empty) 
     { 
      return null; 
     } 
     else 
     { 
    //Validate the Birth date. 
     } 
    } 
} 

Если вы вернете NULL, ModelState не учитывает поле даты рождения.

0

ModelState немного назойливый с DateTime, потому что каждый раз, когда ваш размещенный вход не соответствует форматированию Datetime .isValid() будет ложным.

Вы считали, что используете строку для ввода пользовательского ввода, а затем видите, можно ли ее анализировать в DateTime.

Ps. это также происходит, когда выкладывают и пустую строка: C# MVC 4 ViewModel not accepting null DateTime

Надеется, что это помогает :)