如果字段为空或错误,则 DateTime 的必需属性

use*_*914 1 c# asp.net-mvc-4

RequiredAttribute工程string,但没有DateTime。例如:

    [Required]
    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}", ConvertEmptyStringToNull = false)]
    public DateTime Birthdate { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果Name为空,则验证显示错误,但如果Birthdate为空,则没有任何反应。我在看:

日期时间范围的 ASP MVC 5 客户端验证

MVC 模型范围验证器?

但仍然不适用于 DateTime

小智 5

我认为 DateTime 有一个标准值,因此您应该添加一个范围属性,而不是必需的

[Range(typeof(DateTime), "01/01/1900", "01/01/2100", ErrorMessage="Date is out of Range")]
Run Code Online (Sandbox Code Playgroud)

像这样的东西应该可以解决问题


Rap*_*iro 5

DateTime是一个结构,结构是“值类型”,而不是“引用类型”,因此它们的默认值不是null,因为DateTime它是1/1/0001 12:00:00 AMint其默认值为0

stringtype 是“引用类型”,所有引用类型的默认值为null.

因此,如果要检查值类型是否为null,则应将其创建为Nullable.

像这样:

public DateTime? Birthdate { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者

public Nullable<DateTime> Birthdate { get; set; }
Run Code Online (Sandbox Code Playgroud)