【问题标题】:Why are the dates in my MVC app in the wrong format?为什么我的 MVC 应用程序中的日期格式错误?
【发布时间】:2017-05-20 08:49:23
【问题描述】:

我有一个在 Azure 中运行的 MVC5 应用程序,并且希望以英国格式显示日期,例如:

16 年 15 月 12 日

但它们总是以这种格式出现:

2016 年 12 月 15 日

我已将system.web in Web.config 中的文化设置为

<globalization culture="en-GB" uiCulture="en-GB" />

我知道这归结为我不了解 ASP.NET 中的全球化/文化,但我发现官方文档真的很差。

我花了好几个小时在兜圈子试图弄清楚如何做到这一点,谁能告诉我我做错了什么?

【问题讨论】:

标签: c# asp.net-mvc azure


【解决方案1】:

简单的解决方案

您可以在global.asax.cs 文件中设置文化,如下所示:

// using System.Globalization;

protected void Application_Start()
{
    // Formatting numbers, dates, etc.
    CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-GB");

    // UI strings that we have localized.
    CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
}

调试

您可以使用它来检查您的文化:

Thread.CurrentThread.CurrentCulture.Name // it should return "en-GB"

文档


注意:从您的问题中很难准确判断问题出在哪里。由于您的问题没有具体说明您遇到此问题的具体情况:

  • 服务器(例如:控制器)
  • 型号
  • 查看
  • 客户

假设您在任何时候都没有改变文化并且没有在任何地方发生任何强制格式化,那么上面的解决方案应该可以正常工作。

替代解决方案

这里有一些可供选择的选择:

1.) 覆盖InitializeCulture 方法

protected override void InitializeCulture()
{
    var hidden = this.Request.Form["hidden"];
    var culture = this.Request.Form[hidden];
    if (!string.IsNullOrWhiteSpace(culture))
    {
        this.Culture = culture;
        this.UICulture = culture;
    }

    base.InitializeCulture();
}

2.) 在程序集属性中设置文化

[assembly: AssemblyCulture("en-US")]
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]

3.) 在页面属性中设置文化

<%@ Page Culture="en-US" UICulture="en-US" Title="..." %>

// Razor Symtax
@{
    Page.Culture = "en-US"
    Page.UICulture = "en-US"
    Page.Title = "..."
}

4.) 您的web.configs 文件。

<globalization uiCulture="en-US" culture="en-US" enableClientBasedCulture="false" />

注意enableClientBasedCulture 设置为false

【讨论】:

  • 伙计,这是有教养的!
猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多