【问题标题】:Set culture from a controller's action从控制器的操作中设置文化
【发布时间】:2019-02-24 14:54:52
【问题描述】:

我尝试创建一个 CMS,我必须根据特定页面的语言选择为其设置文化信息。设置当前语言的唯一方法如下:

System.Globalization.CultureInfo.CurrentCulture = new System.Globalization.CultureInfo("el-GR");
System.Globalization.CultureInfo.CurrentUICulture = new System.Globalization.CultureInfo("el-GR");

我尝试在以下位置使用这些行:

  • 操作:它不起作用。出于某种原因,他们并没有改变文化。
  • 视图:它改变了文化,但我必须要求用户在他/她创建的每个视图中输入这些行,这不是一个好主意。
  • _Layout.cshtml :它不起作用。

我的问题的最佳解决方案是在操作中设置文化(我有一个处理所有 CMS 请求的操作)但如果这不可能,找到一种设置文化的方法会很有帮助在 _Layout.cshtml 文件中。

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-2.1


    【解决方案1】:

    请查看此链接Globalization and localization in ASP.NET Core
    有很多方法可以做到这一点

    实施一种策略来为每个请求选择语言/文化

    1. 本地化中间件
    2. QueryStringRequestCultureProvider
    3. Accept-Language HTTP 标头
    4. 使用自定义提供程序

    【讨论】:

    • 这些方法不能用于我的问题。我使用以下路由属性 [Route("{*UrlParts}")] 来获取所有请求。从 UrlParts 我得到访问者请求的地址,并使用该地址找到我必须显示的数据库内容。当我找到内容时,此内容信息将告知我必须为当前请求设置的语言。这意味着我必须以某种方式在此操作中设置当前语言。
    猜你喜欢
    • 2019-01-17
    • 2012-02-25
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2022-09-23
    • 2011-09-05
    • 2013-04-07
    相关资源
    最近更新 更多