为什么我的MVC应用中的日期格式错误?

时间:2017-05-20 08:49:23

标签: c# asp.net-mvc azure

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

15/12/16

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

16年12月15日

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

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

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

我花了几个小时绕圈试图弄清楚如何做到这一点,有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

简单解决方案

您可以在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