ASP.NET MVC Model Binder con formatos de números globales

El archivador de modelo predeterminado devuelve errores para propiedades que son de tipo doble cuando mi aplicación se usa en países que usan un formato de número diferente para decimales (por ejemplo, 1.2 = 1,2). La cultura del sitio se establece condicionalmente en mi BaseController.

He intentado agregar un cuaderno de modelo personalizado y anular la función bindModel, pero no puedo ver cómo solucionar el error allí ya que la Cultura ya se ha restablecido al valor predeterminado de en-GB.

Así que intenté agregar un filtro de acción a mi BaseController que establece la Cultura allí, pero desafortunadamente bindModel parece ser despedido antes que mi filtro de acción.

¿Cómo puedo evitar esto? ¿Al hacer que la Cultura no se reinicie o volver a configurarla antes de que bindModel entre en funcionamiento?

Controller donde el modelo viene inválido:

public ActionResult Save(MyModel myModel)
{
    if (ModelState.IsValid)
    {
        // Save my model
    }
    else
    {
       // Raise error
    }
}

Filtro donde se establece Cultura:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    CultureInfo culture = createCulture(filterContext);

    if (culture != null)
    {
         Thread.CurrentThread.CurrentCulture = culture;
         Thread.CurrentThread.CurrentUICulture = culture;
    }

    base.OnActionExecuting(filterContext);
}

Carpeta de modelo personalizado:

public class InternationalDoubleModelBinder : DefaultModelBinder
{
   public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
   {
       ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
       if (valueResult != null)
       {
           if (bindingContext.ModelType == typeof(double) || bindingContext.ModelType == typeof(Nullable<double>))
           {
               double doubleAttempt;

               doubleAttempt = Convert.ToDouble(valueResult.AttemptedValue);

               return doubleAttempt;
           }
        }
        return null;
   }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta