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); }
/// <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); }
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); }
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); }