// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Internal;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using Microsoft.Extensions.Options;
namespace Microsoft.AspNetCore.Mvc
{
///
/// The default implementation of .
///
internal class DefaultObjectValidator : ObjectModelValidator
{
private readonly MvcOptions _mvcOptions;
///
/// Initializes a new instance of .
///
/// The .
/// The list of .
/// Accessor to .
public DefaultObjectValidator(
IModelMetadataProvider modelMetadataProvider,
IList validatorProviders,
MvcOptions mvcOptions)
: base(modelMetadataProvider, validatorProviders)
{
_mvcOptions = mvcOptions;
}
public override ValidationVisitor GetValidationVisitor(
ActionContext actionContext,
IModelValidatorProvider validatorProvider,
ValidatorCache validatorCache,
IModelMetadataProvider metadataProvider,
ValidationStateDictionary validationState)
{
var visitor = new ValidationVisitor(
actionContext,
validatorProvider,
validatorCache,
metadataProvider,
validationState);
visitor.MaxValidationDepth = _mvcOptions.MaxValidationDepth;
return visitor;
}
}
}