Не удается неявно преобразовать тип System.DateTime? в «System.DateTime» при вставке в базу данных с использованием EFW и ViewModel

Я работаю над этим проектом ASP.NET Core MVC, где пытаюсь сохранить значения из form в Database, когда получаю эту ошибку:

Не удается неявно преобразовать тип System.DateTime? в «System.DateTime». Существует явное преобразование (вам не хватает приведения?)

Я установил FromDate и ToDate как nullable, используя ? следующим образом в `ViewModel:

Модель представления:

public class ILViewModel
{
    ...
    ...
    public DateTime? FromDate { get; set; }
    public DateTime? ToDate { get; set; }
}

В Controller - POST Method я добавляю значения в Database следующим образом:

Контроллер:

if (ModelState.IsValid)
{
    ...
    historyObj.FromDate = locationsHistoryVM.FromDate;
    historyObj.ToDate = locationsHistoryVM.ToDate;
}

Что делать?


person Community    schedule 23.03.2018    source источник
comment
Добавьте .Value, чтобы получить DateTime - historyObj.FromDate = locationsHistoryVM.FromDate.Value;   -  person Rand Random    schedule 23.03.2018
comment
@RandRandom. Можете ли вы опубликовать ответ, чтобы я мог отметить его как правильный ответ? Другие могут извлечь из этого пользу.   -  person    schedule 23.03.2018


Ответы (1)


Вам нужно получить значение из объекта, допускающего значение NULL. тогда вы не получите ошибку

if (ModelState.IsValid)
{
    ...
    historyObj.FromDate = locationsHistoryVM.FromDate.Value;
    historyObj.ToDate = locationsHistoryVM.ToDate.Value;
}
person user9405863    schedule 23.03.2018
comment
Я бы убедился, что свойства ViewModel также помечены [Required], поэтому ModelState будет недействительным, если они равны нулю. - person Valuator; 23.03.2018