Добавьте RequiredAttribute
к свойству DateTime
, тогда вам нужно сделать значение DateTime
обнуляемым, в противном случае вы получите значение по умолчанию для DateTime
, равное {0001-01-01T00:00:00}
.
Так в основном делают следующее:
public class PostModel
{
[Required]
public DateTime? Date { get; set; }
}
Относительно того, почему BindRequired
не сработал, я думаю (не уверен на 100%, это именно то, что я думаю), так как вы используете [ApiController]
, сначала он будет использовать [FromBody]
по умолчанию, затем привязку произойдет после десериализации Json.NET
, поэтому, когда произойдет deserialization
, значение DateTime будет установлено на Default(DateTime)
. Для решения этой проблемы вы можете использовать старый способ, как показано выше, вместо использования BindRequired
или добавить [JsonRequired]
.
Примечание: при использовании [JsonRequired]
с [ApiController]
проверка происходит до того, как она достигнет вашей конечной точки. Также обратите внимание, что BindRequired
хорошо работает с обычным контроллером MVC.