protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) { var performValidation = controllerContext.Controller.ValidateRequest && bindingContext.ModelMetadata.RequestValidationEnabled; var propertyBinderAttribute = propertyDescriptor .Attributes .OfType <DataMemberAttribute>() .FirstOrDefault(); var modelName = propertyBinderAttribute == null ? bindingContext.ModelName : propertyBinderAttribute.Name; var result = performValidation ? bindingContext.ValueProvider.GetValue(modelName) : bindingContext.GetUnvalidatedValue(modelName); if (result == null) { base.BindProperty(controllerContext, bindingContext, propertyDescriptor); } else { propertyDescriptor.SetValue(bindingContext.Model, result.AttemptedValue); } }