模型返回日期值,尽管它在表中不为null

时间:2014-01-26 12:32:14

标签: asp.net-mvc forms entity-framework

我有一个使用实体框架代码优先的asp mvc 5项目。我用脚手架创建了控制器和视图。虽然我没有在模型中指定截止日期为[必需],并且表中的项目的值为NOT NULL。

但我仍然在POST上收到此消息

  

DueDate字段是必需的。

该模型非常基本

 public class Project
    {
      public int ProjectId { get; set; }
      public string Title { get; set; }
      public string Description { get; set; }

      public DateTime StartDate { get; set; }
      public DateTime DueDate { get; set; }

      public int ClientId { get; set; }
      public virtual Client Client { get; set; }
   }
}

这是使用EditorFor

的Datetime2数据类型
<div class="input-group">
     @Html.EditorFor(model => model.DueDate, new { @class = "form-control datepicker" })
        <div class="input-group-addon">
                <a href="#"><i class="entypo-calendar"></i></a>
        </div>
</div>

它也使用jquery bootstrap datepicker,虽然我怀疑它们对此功能有任何影响。真的很困惑这个字段是一个必填字段,但它还没有在解决方案或数据库的任何区域设置。

1 个答案:

答案 0 :(得分:1)

这是正常的。 DateTime是一种值类型,意味着它总是需要一个值。 ASP.NET MVC中的模型元数据提供程序会自动将必需属性添加到不可为空的数据类型中。您可以使用nullable DateTime

public class Project
{
      public int ProjectId { get; set; }
      public string Title { get; set; }
      public string Description { get; set; }

      public DateTime StartDate { get; set; }
      public DateTime? DueDate { get; set; }

      public int ClientId { get; set; }
      public virtual Client Client { get; set; }
}