我正在为多语言ASP.NET MVC 3 web应用程序确定控制器工厂中的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进行比较。
您认为执行此类型操作的最佳位置是什么?