【问题标题】:foolproof validation greaterthan error System.NotImplementedException万无一失的验证大于错误 System.NotImplementedException
【发布时间】:2014-05-08 21:51:01
【问题描述】:

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

[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(对象值) +59 System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(对象值,ValidationContext 验证上下文)+115 System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(对象值,ValidationContext 验证上下文)+29 System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate(EntityValidationContext entityValidationContext, InternalMemberEntry 属性) +198

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

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

【问题讨论】:

    标签: c# asp.net-mvc validation foolproof-validation


    【解决方案1】:

    似乎万无一失没有与 EF4 或更高版本集成,要解决您必须下载整个万无一失项目并过度驱动 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+

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多