多言語ASP.NETMVC3 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);
}
}
上記のコードはもう1年近く経っています!だから、私は提案を開きます。
そして、私はこれを次のようにGlobal.asaxファイルに登録します。
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
これはうまく機能していますが、このタイプのアクションを実行するためのベストプラクティスであり、最適な場所であるかどうかはわかりません。
私はの主な役割を掘り下げていません、ControllerFactory
そして私はそれをと比較することができませんActionFilterAttribute
。
この種の行動をとるのに最適な場所についてどう思いますか?