Для многоязычного веб-приложения ASP.NET MVC 3 я определяю Thread.CurrentThread.CurrentCulture
и Thread.CurrentThread.CurrentUICulture
на контроллере factory следующим образом:
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
.
Что вы думаете о лучшем месте для этого типа действий?