2014-05-08 54 views
1

即時通訊使用的萬無一失數小時驗證萬無一失驗證GREATERTHAN錯誤System.NotImplementedException

[Required] 
[Range(typeof(TimeSpan), "00:00:00", "23:59:59")] 
public Nullable<System.TimeSpan> start { get; set; } 
[Required] 
[GreaterThan("HoraInicio")] 
public Nullable<System.TimeSpan> end { get; set; } 

它正確地驗證字段,但是當我在控制器調用的SubmitChanges它將引發我一個錯誤

[NotImplementedException: Foolproof.ModelAwareValidationAttribute.IsValid(Object value)+59 System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(對象值,Validati onContext validationContext)115 System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(對象值,ValidationContext validationContext)29 System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate(EntityValidationContext entityValidationContext,InternalMemberEntry屬性)198

[DbUnexpectedValidationException:調用Foolproof.GreaterThanAttribute.IsValid時,在驗證'結束'期間引發了意外的異常。詳情請看內部例外。]

與日期發生相同,我該怎麼辦?有沒有其他的方式來做這個驗證?

回答

2

似乎萬無一失與EF4或更高版本集成在一起,要解決您必須下載整個Foolproof項目並在ModelAwareValidationAttribute類中過載「isvalid」方法,然後構建它並將dll引用到您的項目中。

protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
{ 
var container = validationContext.ObjectInstance; 

#region This block of code decompiled from namespace System.ComponentModel.DataAnnotations.ValidationAttribute 
ValidationResult local_0 = ValidationResult.Success; 
if (!this.IsValid(value, container)) // Change to decompiled code here to call our abstract implementation instead of the NotImplemented IsValid(object value) method above 
{ 
    string[] temp_26; 
    if (validationContext.MemberName == null) 
     temp_26 = (string[])null; 
    else 
     temp_26 = new string[1] 
      { 
       validationContext.MemberName 
      }; 
    string[] local_1 = temp_26; 
    local_0 = new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName), (IEnumerable<string>)local_1); 
} 
return local_0; 
#endregion} 

http://foolproof.codeplex.com/SourceControl/latest http://forums.asp.net/t/1752975.aspx?Conditional+validation+with+MVC+Foolproof+Validation+