加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – mvc4数据注释比较两个日期

发布时间:2020-12-15 18:44:18 所属栏目:asp.Net 来源:网络整理
导读:我的模型中有这两个字段: [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")]
我的模型中有这两个字段:
[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" });
       }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读