0

我的模型代码中有以下内容

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

    public DateTime? PreferredShowDate2 { get; set; }

    public DateTime? PreferredShowDate3 { get; set; }

现在,我想确保 PreferredShowDate1 < PreferredShowDate2 < PreferredShowDate3 并且 3 个日期都不相同。

是否可以在模型代码中执行此操作?我可以这样做吗?

//put in some code in attribute to compare preferredShowDate2 with preferredShowDate1      
[compare]
public DateTime? PreferredShowDate2 { get; set; }

有任何想法吗?

4

2 回答 2

5

查看万无一失的验证

http://foolproof.codeplex.com/

使您可以访问大于/小于验证属性以及许多有用的其他属性

于 2013-08-19T15:34:47.423 回答
0

您可以使用 IValidatableObject 接口来执行这种验证。

public class MyClass : IValidatableObject
{
    public DateTime? PreferredShowDate1 { get; set; }

    public DateTime? PreferredShowDate2 { get; set; }

    public DateTime? PreferredShowDate3 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    //Example compare stuff. Your needs may vary.
    if ((DateTime.Compare(PreferredShowDate1, PreferredShowDate2) < 0) && 
     (DateTime.Compare(PreferredShowDate2, PreferredShowDate3) < 0))
    {
         yield return new ValidationResult("Invalid Date", new[] { "PreferredShowDate1" });
    }
}
于 2013-08-19T15:59:31.430 回答