c# – 使用ASP.NET MVC的Spark全球化
发布时间:2020-12-15 21:12:24 所属栏目:百科 来源:网络整理
导读:我正在使用spark viewengine,asp.net mvc和.resx文件. 我想通过我自定义的SessionModel(Session)设置一种语言,它通过Castle.Windsor注册,并且具有Culture的字符串属性,可以由用户设置… 我需要当前语言坚持每一个视图,而不必经常设置当前的UICulture. 在每个
我正在使用spark viewengine,asp.net mvc和.resx文件.
我想通过我自定义的SessionModel(Session)设置一种语言,它通过Castle.Windsor注册,并且具有Culture的字符串属性,可以由用户设置… 我需要当前语言坚持每一个视图,而不必经常设置当前的UICulture. 在每个Controller Action中不必每次都执行此操作: public SessionModel SessionModel { get; set; } public ActionResult Index() { Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SessionModel.Culture); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; } 这样做的问题是,如果我进入另一个页面,当前的文化将翻转回默认语言. 在火花视图中我只是打电话,获取当前的文化: ${SR.Home} SR.resx包含Home的公共条目. 有没有人知道如何做到这一点,我应该用ActionFilter吗? 解决方法
动作过滤器似乎是一个好主意:
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(); } } 然后使用此属性装饰您的基本控制器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |