ASP.NET MVC 4通过url参数切换资源文件

时间:2013-08-28 16:29:40

标签: c# asp.net-mvc resx

我是处理资源文件的新手,我还没有完成它的工作原理。现在我需要用英文和中文提供我的应用程序文本。我将收到一个get参数(例如lang),从那里我将需要决定是否使用Language.zh.resx或我的默认语言.resx - 这就是我从我读过的文章中理解的。现在我有我的视图标题,例如:

 @{
      ViewBag.Title = MyApplication.App_GlobalResources.Language.MyPage_Title;
  }

我无法弄清楚在哪里检查参数lang并应用它。我看到人们说我应该创建一个动作过滤器并且他们在cookie中添加内容并且它们令人困惑的文章。在我的情况下,它可能没有必要,因为它只有一个请求,没有要求保持状态,因为一旦页面加载就是它。

如果有人也可以简单解释资源如何运作,那就太好了,谢谢!

2 个答案:

答案 0 :(得分:0)

有几篇文章使用会话和URL变量讨论全球化和MVC。我正在链接这两个因为会话一个在视图中覆盖了更多的视图,但无论您是路由(/ en-us / Controller)还是使用会话,视图的逻辑都应保持不变。

  1. Session based Globalization
  2. Routing Based Globalization

答案 1 :(得分:0)

假设您的控制器中有一个字符串lang,在控制器中您应该更改当前的文化,所以您唯一需要做的就是这样的事情

var culture = new CultureInfo(lang);
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;

我建议您通过某些属性执行此步骤,然后将其应用于控制器。