1

我使用了几个小时的万无一失的验证

[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: No se puede implementar el método o la operation.] Foolproof.ModelAwareValidationAttribute.IsValid(Object value) +59 System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext) +115 System.ComponentModel.DataAnnotations.ValidationAttribute .GetValidationResult(对象值,ValidationContext 验证上下文)+29 System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate(EntityValidationContext entityValidationContext,InternalMemberEntry 属性)+198

[DbUnexpectedValidationException:调用 Foolproof.GreaterThanAttribute.IsValid 时,在验证“结束”期间引发了意外异常。有关详细信息,请参阅内部异常。]

日期也一样,我该怎么办?还有其他方法可以进行此验证吗?

4

1 回答 1

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+

于 2014-05-08T23:30:02.200 回答