【发布时间】:2015-06-23 17:24:49
【问题描述】:
如何在流利的验证中编写规则来检查两个可以为空的日期,因为开始日期需要早于结束日期。
我的思路是这样的
RuleFor(c => c.StartDate)
.NotEmpty()
如果开始日期不为空且结束日期不为空,则比较
【问题讨论】:
标签: asp.net-mvc fluentvalidation
如何在流利的验证中编写规则来检查两个可以为空的日期,因为开始日期需要早于结束日期。
我的思路是这样的
RuleFor(c => c.StartDate)
.NotEmpty()
如果开始日期不为空且结束日期不为空,则比较
【问题讨论】:
标签: asp.net-mvc fluentvalidation
类似的东西-
RuleFor(ac => ac.StartDate)
.NotEmpty().WithMessage("*Required")
RuleFor(ac => ac.EndDate)
.NotEmpty().WithMessage("*Required")
.GreaterThan(r => r.StartDate);
注意-
数据类型必须相同才能进行比较。
或者更方便的是source-
RuleFor(m => m.StartDate)
.NotEmpty()
.WithMessage("Start Date is Required");
RuleFor(m => m.EndDate)
.NotEmpty().WithMessage("End date is required")
.GreaterThan(m => m.StartDate.Value)
.WithMessage("End date must after Start date")
.When(m => m.StartDate.HasValue);
【讨论】:
DateTime does not contain a definition for 'Value' -- .Value 属性不能用于任何日期时间字段。这显然已在 MVC5 和最新的 Fluent Validation 中被贬低。
HasValue 对于 DateTime 也不存在,至少对于 MVC5 和最新的 Fluent Validation。
Value 和 HasValue 不可为空,您也可以顺利进行。