public class FromBodyApplicationModelConvention : IApplicationModelConvention
    {
        public void Apply(ApplicationModel application)
        {
            foreach (var controller in application.Controllers)
            {
                foreach (var action in controller.Actions)
                {
                    foreach (var parameter in action.Parameters)
                    {
                        if (parameter.BindingInfo?.BindingSource != null ||
                            parameter.Attributes.OfType<IBindingSourceMetadata>().Any() ||
                            ValueProviderResult.CanConvertFromString(parameter.ParameterInfo.ParameterType))
                        {
                            // behavior configured or simple type so do nothing
                        }
                        else
                        {
                            // Complex types are by-default from the body.
                            parameter.BindingInfo = parameter.BindingInfo ?? new BindingInfo();
                            parameter.BindingInfo.BindingSource = BindingSource.Body;
                        }
                    }
                }
            }
        }
    }