【问题标题】:How can I make a DateTime model property required?如何使 DateTime 模型属性成为必需?
【发布时间】:2014-11-19 19:11:10
【问题描述】:

我有一个具有 datetime 属性的模型,我想确保在视图中,除非该编辑器具有值,否则无法提交表单。

employee {
 [DataType(DataType.Date)]
 [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
 [Required] // <- this isn't doing anything for me???
 public DateTime DateOfBirth {get;set;}
}

是否有我可以使用的注释或者我必须在页面中使用 javascript?

或者有其他解决方案吗?

更新-

当我清除日期编辑器时,我的编辑器框中会显示以下内容:

mm/dd/yyyy

当我提交这个时,这算作空还是什么?使 DateTime 属性为空并不能解决我的问题,当我提交日期为 mm/dd/yyyy 的表单时没有进行验证

【问题讨论】:

  • DateTime 不会为空。如果将类型更改为DateTime?,会发生什么?
  • @Jonesy 你是什么意思?已经是日期时间了
  • 在一个类型之后添加一个问号使它可以为空,所以DateTime?是一个可以为空的DateTime
  • 我明白了,我正在尝试,谢谢!

标签: c# asp.net-mvc datetime data-annotations


【解决方案1】:

你的问题是DateTime 总是有值

您需要将其设为 可为空 DateTime:

[Required]
public DateTime? DateOfBirth { get; set; }

现在,当不存在任何值时,您的属性将为 null,并且您的 Required 属性将按预期运行。

【讨论】:

  • @AbdulAhmad 你的问题没有足够的信息来进一步回答 - 这是你的问题的原因,如果你仍然有问题,原因在别处。您现在需要调试您的操作方法并检查模型属性,确保您正在检查Model.IsValid 等等。如果您遇到其他问题,请将它们作为新问题提出。
  • 啊,可能是Model.IsValid,忘记了,谢谢指出!
猜你喜欢
  • 2018-06-27
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多