2

カスタム検証属性があります。POST 経由でサーバーにリクエストを送信すると、属性に対して IsValid メソッドが 2 回起動されます。

その結果、エラーメッセージが重複して返されました。

Fiddler を使用して、リクエストが 1 回だけ発生することを確認したので、モデル バインディングが 2 回発生する 1 つのリクエストです。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class MinimumAgeAttribute : ValidationAttribute
{
    private readonly int _minimumAge;

    public MinimumAgeAttribute(int minimumAge)
    {
        _minimumAge = minimumAge;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        DateTime date;

        if (DateTime.TryParse(value.ToString(), out date))
        {
            if (date.AddYears(_minimumAge) < DateTime.Now)
            {
                return ValidationResult.Success;
            }
        }

        return new ValidationResult("Invalid Age, Clients must be 18 years or over");
    }
}
4

2 に答える 2

9

問題は Ninject にあり、ModelValidatorProvider の数が倍増していました。

問題を防ぐために、このバインディングを追加しました。

container.Rebind<ModelValidatorProvider>().To<NinjectDefaultModelValidatorProvider>();
于 2016-03-14T08:53:27.220 に答える