コード例 #1
0
    public async Task BindModel_ReturnsFailedResult_EvenIfSelectedBinderReturnsNull()
    {
        // Arrange
        var bindingContext = GetBindingContext(typeof(Person), binderType: typeof(NullModelBinder));

        var binder = new BinderTypeModelBinder(typeof(NullModelBinder));

        // Act
        await binder.BindModelAsync(bindingContext);

        // Assert
        Assert.False(bindingContext.Result.IsModelSet);
    }
コード例 #2
0
        /// <summary>
        /// Creates a <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder" /> based on <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.ModelBinderProviderContext" />.
        /// </summary>
        /// <param name="context">The <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.ModelBinderProviderContext" />.</param>
        /// <returns>An <see cref="T:Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder" />.</returns>
        /// <exception cref="ArgumentNullException">context</exception>
        public IModelBinder GetBinder(ModelBinderProviderContext context)
        {
            IModelBinder binder = null;

            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (context.Metadata.ModelType == typeof(VerifyResponse))
            {
                binder = new BinderTypeModelBinder(typeof(HCaptchaModelBinder));
            }

            return(binder);
        }
コード例 #3
0
        public IModelBinder GetBinder(ModelBinderProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (context.Metadata.ModelType == typeof(Book))
            {
                var binder = new BinderTypeModelBinder(typeof(BookBinder));

                return(binder);
            }

            return(null);
        }
コード例 #4
0
    public async Task BindModel_CallsBindAsync_OnProvidedModelBinder()
    {
        // Arrange
        var bindingContext = GetBindingContext(typeof(Person), binderType: typeof(NotNullModelBinder));

        var model           = new Person();
        var serviceProvider = new ServiceCollection()
                              .AddSingleton <IModelBinder, NullModelBinder>()
                              .BuildServiceProvider();

        bindingContext.HttpContext.RequestServices = serviceProvider;

        var binder = new BinderTypeModelBinder(typeof(NotNullModelBinder));

        // Act
        await binder.BindModelAsync(bindingContext);

        // Assert
        var person = (Person)bindingContext.Result.Model;

        Assert.Equal(model.Age, person.Age);
        Assert.Equal(model.Name, person.Name);
    }