2013-08-19 29 views
0

我在我的模型代码如下如何通过属性验证一个日期是否比我的MVC模型中的其他日期更长?

[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; } 

任何想法?

+0

你必须自己做。这种“列跨越逻辑”不支持oob – TGlatzer

回答

4

退房万无一失验证

http://foolproof.codeplex.com/

,您可以访问一个GREATERTHAN /每种不超过验证属性以及有用的其他的主机

+0

不错的链接,太糟糕我以前不知道这些,因为我认为我已经手写至少1/3的那些! – Tommy

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" }); 
    } 
} 
相关问题