ASP.NET Core-在Linux上部署时,日期输入格式发生更改

时间:2018-07-05 20:24:41

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

我有一个相当简单的asp.net core(MVC)项目,该项目在数据中包括一些日期字段。

我希望日期显示为dd / MM / yyyy,因此日期字段的显示格式如下:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? AccessExpiresDate { get; set; }

在Windows开发环境中进行测试时,一切都很好。如果要输入2018年12月1日,请输入2018年12月1日,这样保存。我回去,它再次显示为(01/12/2018)。

但是当我部署到linux(Centos)时,它的行为有所不同。它可以正确显示(dd / MM / yyyy),但似乎需要以MM / dd / yyyy输入才能进行编辑。

例如,如果我输入日期为01/12/2018,保存,然后查看,它将显示为12/01/2018。 如果我返回编辑,它将显示为12/01/2018。如果我随后将其保存而不进行更改,则再次查看,它将显示为01/12/2018。

如果我输入日期为20/12/2018,它将使日期无效,就好像这是一个无效日期(因为它认为我输入的是第20个月)。

所以-这是怎么回事?在Linux上部署时,为什么日期条目的行为会有所不同?我该如何强制它始终期望日期为dd / MM / yyyy?

谢谢。

1 个答案:

答案 0 :(得分:0)

我在此帖子中找到了答案:How to set culture for date binding in Asp.Net Core?

我将以下代码放入Startup.Configure的开始,一切都很好:

    var supportedCultures = new[] { new CultureInfo("en-AU") };
    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en-AU"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    });
相关问题