我的模型中有这两个字段:
[required(ErrorMessage="The start date is required")] [Display(Name="Start Date")] [DisplayFormat(DataFormatString = "{0,d}")] public DateTime startDate { get; set; } [required(ErrorMessage="The end date is required")] [Display(Name="End Date")] [DisplayFormat(DataFormatString = "{0,d}")] public DateTime endDate{ get; set; }
我要求endDate必须大于startDate。我尝试使用[Compare(“startDate”)],但这只适用于相等的操作。
对于“大于”操作应该使用什么?
解决方法
看看
Fluent Validation或
MVC Foolproof Validation:那些可以帮助你很多。
以Foolproof为例,有一个[GreaterThan(“StartDate”)]注释比你可以在你的date属性上使用。
或者如果您不想使用其他库,则可以通过在模型上实现IValidatableObject来实现自己的自定义验证:
public class viewmodel: IValidatableObject { [required] public DateTime StartDate { get; set; } [required] public DateTime EndDate { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (EndDate < StartDate) { yield return new ValidationResult(errorMessage: "EndDate must be greater than StartDate",memberNames: new[] { "EndDate" }); } } }