DisplayFormat(ApplyFormatInEditMode = true,DataFormatString =“ {0:dd.MM.yyyy}”)按预期显示日期,但保存后日期转换错误

时间:2019-02-16 09:36:19

标签: asp.net asp.net-mvc

正如话题所说:

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

显示效果很好:

<div class="form-group">
    <label asp-for="KeyStartDate">@Resources.Global.StartDate</label>
    <input data-toggle="datepicker" asp-for="KeyStartDate" class="form-control" />
    <span asp-validation-for="KeyStartDate" class="text-danger"></span>
</div>

但是当我提交表格时,日期解析错误,例如“ MM / dd / YYYY”。因此,如果我选择日期为01.02.2019(2月1日),则该事件将其解释为01/02/2019(1月2日)。

该怎么办?

编辑:

日期选择器部分:

$('[data-toggle="datepicker"]').datepicker({ format: 'dd.MM.yyyy' }); 

1 个答案:

答案 0 :(得分:1)

这有效:(在startup.cs中)

var defaultDateCulture = "fi-FI";
var ci = new CultureInfo(defaultDateCulture);
ci.NumberFormat.NumberDecimalSeparator = ".";
ci.NumberFormat.CurrencyDecimalSeparator = ".";

// Configure the Localization middleware
app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture(ci),
    SupportedCultures = new List<CultureInfo>
    {
        ci,
    },
    SupportedUICultures = new List<CultureInfo>
    {
        ci,
    }
});