También me encuentro con el mismo problema. Cuando el archivador modelo tiene datos no válidos, se ejecuta antes de los filtros de acción.
No me gustaron las soluciones propuestas porque jugar con el enrutamiento no era mi solución preferida. Escuchar Application_AcquireRequestState es problemático porque este evento se desencadena para todas y cada una de las solicitudes, no solo para las solicitudes que se enrutarán a los controladores MVC.
He terminado escribiendo una implementación personalizada de IControllerFactory
que usa DefaultControllerFactory
internamente y ejecuta el código de localización dentro del método CreateController
.
Esto tampoco es ideal, espero que ayude.
public class PluggableControllerFactory : IControllerFactory {
private readonly IControllerFactory innerControllerFactory;
public PluggableControllerFactory() {
innerControllerFactory = new DefaultControllerFactory();
}
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName) {
// Run your culture localization here
return innerControllerFactory.CreateController(requestContext, controllerName);
}
public System.Web.SessionState.SessionStateBehavior GetControllerSessionBehavior(System.Web.Routing.RequestContext requestContext, string controllerName) {
return innerControllerFactory.GetControllerSessionBehavior(requestContext, controllerName);
}
public void ReleaseController(IController controller) {
innerControllerFactory.ReleaseController(controller);
}
}
}
Tenía exactamente la misma configuración y pregunta, gracias por preguntar;) –