public static IModelMetadataProvider CreateDefaultProvider(IList <IMetadataDetailsProvider> providers)
    {
        var detailsProviders = new List <IMetadataDetailsProvider>()
        {
            new DefaultBindingMetadataProvider(),
            new DefaultValidationMetadataProvider(),
            new DataAnnotationsMetadataProvider(
                new MvcOptions(),
                Options.Create(new MvcDataAnnotationsLocalizationOptions()),
                stringLocalizerFactory: null),
            new DataMemberRequiredBindingMetadataProvider(),
        };

        MvcCoreMvcOptionsSetup.ConfigureAdditionalModelMetadataDetailsProviders(detailsProviders);

        detailsProviders.AddRange(providers);

        var validationProviders = TestModelValidatorProvider.CreateDefaultProvider();

        detailsProviders.Add(new HasValidatorsValidationMetadataProvider(validationProviders.ValidatorProviders));

        var compositeDetailsProvider = new DefaultCompositeMetadataDetailsProvider(detailsProviders);

        return(new DefaultModelMetadataProvider(compositeDetailsProvider, Options.Create(new MvcOptions())));
    }
예제 #2
0
        // Creates a provider with all the defaults - includes data annotations
        public static ModelMetadataProvider CreateDefaultProvider(IStringLocalizerFactory stringLocalizerFactory = null)
        {
            var detailsProviders = new List <IMetadataDetailsProvider>
            {
                new DefaultBindingMetadataProvider(),
                new DefaultValidationMetadataProvider(),
                CreateDefaultDataAnnotationsProvider(stringLocalizerFactory),
                new DataMemberRequiredBindingMetadataProvider(),
            };

            MvcCoreMvcOptionsSetup.ConfigureAdditionalModelMetadataDetailsProviders(detailsProviders);

            var compositeDetailsProvider = new DefaultCompositeMetadataDetailsProvider(detailsProviders);

            return(new DefaultModelMetadataProvider(compositeDetailsProvider, Options.Create(new MvcOptions())));
        }