Для многоязычного веб-приложения ASP.NET MVC 3 я определяю поток Thread.CurrentThread.CurrentCulture
и Thread. CurrentThread.CurrentUICulture
на фабрике контроллеров следующим образом:
public class MyControllerFactory : DefaultControllerFactory {
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) {
//Get the {language} parameter in the RouteData
string UILanguage;
if (requestContext.RouteData.Values["language"] == null)
UILanguage = "tr";
else
UILanguage = requestContext.RouteData.Values["language"].ToString();
//Get the culture info of the language code
CultureInfo culture = CultureInfo.CreateSpecificCulture(UILanguage);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
return base.GetControllerInstance(requestContext, controllerType);
}
}
Приведенному выше коду почти год! Итак, я открыт для предложений.
И я регистрирую это в файле Global.asax следующим образом:
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
Это работает хорошо, но я не уверен, что это лучшая практика и лучшее место для выполнения таких действий.
Я не разбирался в главной роли ControllerFactory
и не могу сравнить ее с ActionFilterAttribute
.
Что вы думаете о лучшем месте для таких действий?