12345678910111213141516171819202122232425262728293031323334353637 |
- using Microsoft.AspNetCore.Mvc.ModelBinding;
- using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
- #if NET5_0_OR_GREATER
- using ComplexDataModelBinderProvider = Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexObjectModelBinderProvider;
- #else
- using ComplexDataModelBinderProvider = Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinderProvider;
- #endif
- namespace Masuit.Tools.AspNetCore.ModelBinder;
- public class BodyOrDefaultModelBinderProvider : IModelBinderProvider
- {
- private readonly BodyModelBinderProvider _bodyModelBinderProvider;
- private readonly ComplexDataModelBinderProvider _complexDataModelBinderProvider;
- public BodyOrDefaultModelBinderProvider(BodyModelBinderProvider bodyModelBinderProvider, ComplexDataModelBinderProvider complexDataModelBinderProvider)
- {
- _bodyModelBinderProvider = bodyModelBinderProvider;
- _complexDataModelBinderProvider = complexDataModelBinderProvider;
- }
- public IModelBinder GetBinder(ModelBinderProviderContext context)
- {
- if (context.BindingInfo.BindingSource != null && context.BindingInfo.BindingSource.CanAcceptDataFrom(BindingSource.Body))
- {
- var bodyBinder = _bodyModelBinderProvider.GetBinder(context);
- var complexBinder = _complexDataModelBinderProvider.GetBinder(context);
- return new BodyOrDefaultModelBinder(bodyBinder, complexBinder);
- }
- return null;
- }
- }
|