【问题标题】:Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime' when inserting into Database using EFW and ViewModel [duplicate]无法隐式转换类型“System.DateTime?”使用 EFW 和 ViewModel 插入数据库时​​到“System.DateTime”[重复]
【发布时间】:2018-03-23 18:49:46
【问题描述】:

我正在处理这个ASP.NET Core MVC 项目,当我收到此错误时,我试图将form 中的值保存到Database

无法隐式转换类型“System.DateTime?”到“系统。日期时间”。存在显式转换(您是否缺少演员表?)

我在 `ViewModel 中使用? 以下列方式将FromDateToDate 设置为nullable

视图模型:

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;
}

怎么办?

【问题讨论】:

  • 添加.Value 获取DateTime - historyObj.FromDate = locationsHistoryVM.FromDate.Value;
  • @RandRandom。您可以发布答案以便我将其标记为正确答案吗?其他人可以从中受益。

标签: asp.net-mvc entity-framework asp.net-core-mvc viewmodel asp.net-mvc-viewmodel


【解决方案1】:

您需要从可为空的对象中获取值。那么你就不会出错了

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

【讨论】:

  • 我会确保 ViewModel 属性也标记为 [Required],因此如果它们为 null,ModelState 将无效。
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 2023-03-15
相关资源
最近更新 更多