protected override void BindProperty(
     ControllerContext controllerContext,
     ModelBindingContext bindingContext,
     PropertyDescriptor propertyDescriptor)
 {
     var propertyBinderAttribute = propertyDescriptor.TryFindPropertyBinderAttribute();
     if (propertyBinderAttribute != null)
     {
         var binder = this.CreateBinder(propertyBinderAttribute);
         var value = binder.BindModel(controllerContext, bindingContext, propertyDescriptor);
         propertyDescriptor.SetValue(bindingContext.Model, value);
     }
     else
     {
         base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
     }
 }