示例#1
0
        public static ModelBindingTestContext GetTestContext(
            Action <HttpRequest> updateRequest          = null,
            Action <MvcOptions> updateOptions           = null,
            ControllerActionDescriptor actionDescriptor = null,
            IModelMetadataProvider metadataProvider     = null,
            MvcOptions mvcOptions = null)
        {
            var httpContext = GetHttpContext(metadataProvider, updateRequest, updateOptions, mvcOptions);
            var services    = httpContext.RequestServices;

            metadataProvider = metadataProvider ?? services.GetRequiredService <IModelMetadataProvider>();
            var options = services.GetRequiredService <IOptions <MvcOptions> >();

            var context = new ModelBindingTestContext
            {
                ActionDescriptor       = actionDescriptor ?? new ControllerActionDescriptor(),
                HttpContext            = httpContext,
                MetadataProvider       = metadataProvider,
                MvcOptions             = options.Value,
                RouteData              = new RouteData(),
                ValueProviderFactories = new List <IValueProviderFactory>(options.Value.ValueProviderFactories),
            };

            return(context);
        }
        public static ModelBindingTestContext GetTestContext(
            Action <HttpRequest> updateRequest          = null,
            Action <MvcOptions> updateOptions           = null,
            ControllerActionDescriptor actionDescriptor = null)
        {
            var httpContext = GetHttpContext(updateRequest, updateOptions);
            var services    = httpContext.RequestServices;

            var context = new ModelBindingTestContext()
            {
                ActionDescriptor = actionDescriptor ?? new ControllerActionDescriptor(),
                HttpContext      = httpContext,
                MetadataProvider = TestModelMetadataProvider.CreateDefaultProvider(),
                RouteData        = new RouteData(),
            };

            var options = services.GetRequiredService <IOptions <MvcOptions> >();
            var valueProviderFactoryContext = new ValueProviderFactoryContext(context);

            foreach (var factory in options.Value.ValueProviderFactories)
            {
                factory.CreateValueProviderAsync(valueProviderFactoryContext).GetAwaiter().GetResult();
            }

            context.ValueProviders = valueProviderFactoryContext.ValueProviders;

            return(context);
        }
 private Task <bool> TryUpdateModel(
     object model,
     string prefix,
     ModelBindingTestContext testContext)
 {
     return(ModelBindingHelper.TryUpdateModelAsync(
                model,
                model.GetType(),
                prefix,
                testContext,
                testContext.MetadataProvider,
                TestModelBinderFactory.CreateDefault(),
                new CompositeValueProvider(testContext.ValueProviders),
                ModelBindingTestHelper.GetObjectValidator(testContext.MetadataProvider)));
 }
        private async Task <bool> TryUpdateModelAsync(
            object model,
            string prefix,
            ModelBindingTestContext testContext)
        {
            var valueProvider = await CompositeValueProvider.CreateAsync(testContext);

            return(await ModelBindingHelper.TryUpdateModelAsync(
                       model,
                       model.GetType(),
                       prefix,
                       testContext,
                       testContext.MetadataProvider,
                       TestModelBinderFactory.CreateDefault(),
                       valueProvider,
                       ModelBindingTestHelper.GetObjectValidator(testContext.MetadataProvider)));
        }
 public static ParameterBinder GetParameterBinder(ModelBindingTestContext testContext)
 {
     return(GetParameterBinder(testContext.HttpContext.RequestServices));
 }