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

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

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

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


person Catalin    schedule 06.08.2013    source источник
comment
Имеет ли это смысл? Если пользователь вводит дату, он ожидает, что она будет принята (или отклонена). Если вы просто сохраните их как null, это может оказаться проблематичным.   -  person Gorgsenegger    schedule 06.08.2013
comment
Мне это нужно, потому что проверка даты и времени на стороне клиента очень проблематична, особенно если вы используете Google Chrome   -  person Catalin    schedule 06.08.2013


Ответы (2)


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

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

Пс. это также происходит при попытке опубликовать пустую строку: C # MVC 4 ViewModel не принимает значение DateTime со значением null

Надеюсь это поможет :)

person Frog    schedule 18.07.2016

вы выполняете проверку на стороне клиента, тогда вы не беспокоитесь об этой проверке, если значение даты рождения равно нулю или пусто, тогда вы возвращаетесь 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 не учитывает поле Birthdate.

person Selva    schedule 06.08.2013