我正在使用 spark viewengine、asp.net mvc 和 .resx 文件。
我想通过我的自定义 SessionModel (Session) 设置一种语言,它通过 CaSTLe.Windsor 注册并且具有可以由用户设置的 Culture 字符串属性......
我需要当前语言在每个 View 上都保持不变,而不必不断设置当前的 UICulture。
不必每次在每个 Controller 操作中都这样做:
public SessionModel SessionModel { get; set; }
public ActionResult Index()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SessionModel.Culture);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}
这样做的问题是,如果我转到另一个页面,当前的文化将翻转回默认语言。
在我简单地调用 spark View 上,以获取当前文化:
${SR.Home}
SR.resx 包含主页的公共(public)条目。
有没有人知道如何做到这一点,我应该用 ActionFilter 做到这一点吗?
最佳答案
Action 过滤器似乎是个好主意:
public class SetCultureActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
CultureInfo culture = FetchCultureFromContext(filterContext);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
base.OnActionExecuting(filterContext);
}
private CultureInfo FetchCultureFromContext(ActionExecutingContext filterContext)
{
throw new NotImplementedException();
}
}
然后用这个属性装饰你的基本 Controller 。
关于c# - Spark 全局化与 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4116591/