public IModelBinder GetBinder(ModelBinderProviderContext context) { if (context.BindingInfo.BindingSource != null && context.BindingInfo.BindingSource.CanAcceptDataFrom(BodyOrDefaultBindingSource.BodyOrDefault)) { var bodyBinder = _bodyModelBinderProvider.GetBinder(context); var complexBinder = _complexTypeModelBinderProvider.GetBinder(context); return(new BodyOrDefaultModelBinder(bodyBinder, complexBinder)); } return(null); }
public IModelBinder GetBinder(ModelBinderProviderContext context) { IModelBinder modelBinder = defaultProvider.GetBinder(context); // default provider returns null when there is error.So for not null setting our binder if (modelBinder != null) { modelBinder = new NtBodyModelBinder(this.formatters, this.readerFactory); } return(modelBinder); }
public void GetBinder_DoesNotThrowNullReferenceException() { // Arrange var context = new TestModelBinderProviderContext(typeof(Person)); context.BindingInfo.BindingSource = BindingSource.Body; var formatter = new TestInputFormatter(); var formatterList = new List <IInputFormatter> { formatter }; var provider = new BodyModelBinderProvider(formatterList, new TestHttpRequestStreamReaderFactory()); // Act & Assert (does not throw) provider.GetBinder(context); }
/// <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> public IModelBinder?GetBinder(ModelBinderProviderContext context) { var bodyBinder = _bodyModelBinderProvider.GetBinder(context); var complexBinder = _complexTypeModelBinderProvider.GetBinder(context); if (context.BindingInfo.BindingSource != null && context.BindingInfo.BindingSource.CanAcceptDataFrom(BodyAndRouteBindingSource.BodyAndRoute)) { return(new BodyAndRouteModelBinder(bodyBinder, complexBinder)); } else { return(null); } }