Globalização MVC3: precisa de filtro global antes da ligação do modelo
Atualmente, tenho um filtro global chamadoGlobalizationFilter
que verifica os valores da rota, os cookies e o cabeçalho dos idiomas do navegador para determinar as configurações de cultura corretas para a solicitação:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// determine cultureInfo
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
}
Tudo funciona, mas o processo de ligação do modelo parece ocorrer antes dos filtros globais e, portanto, o fichário do modelo não leva em consideração as configurações de cultur
Isso leva a problemas com a interpretação de valores duplos,DateTime
valores etc.
Posso mover o código de detecção de cultura para outros locais, mas não gosto de nenhuma das minhas opções:
FormuláriosBeginRequest
evento. Nesse momento, o roteamento não ocorreu, então terei que pescar manualmente o/en-US/
token de cultura do URL. Isso é inaceitável.
ControladorInitialize()
método. Isso me forçará a escrever uma classe base para todos os meus controladores e herdar os controladores existentes. Não gosto disso, mas optarei por esta solução se nada melhor surgir.
Idealmente, quero encontrar uma maneira de injetar meu código entre os eventos "roteamento completo" e "início de ligação do modelo", mas não encontrei nada no MSDN / Google sobre isso.
Ou talvez exista alguma outra maneira de lidar com a globalização do MVC3 que eu desconheç
Agradecemos antecipadamente por qualquer contribuiçã