对于多语言 ASP.NET MVC 3 Web 应用程序,我在控制器工厂上确定Thread.CurrentThread.CurrentCulture
andThread.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
.
您认为进行此类操作的最佳地点是什么?