C# 由于MVC中的格式,无法更新日期

C# 由于MVC中的格式,无法更新日期,c#,asp.net-mvc,postgresql,C#,Asp.net Mvc,Postgresql,来自模型的代码片段 [Display(Name = "Updated Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public Nullable<DateTime> updatedAt { get; set; } 来自视图的

来自模型的代码片段

    [Display(Name = "Updated Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public Nullable<DateTime> updatedAt { get; set; }
来自视图的代码片段

 @Html.TextBoxFor(model => model.updatedAt, @"{0:dd\/MM\/yyyy}", new { @class = "form-control" })
当我尝试使用值“25/11/2020”更新此列时,将出现此警告

The value '25/11/2020' is not valid for Updated Date.
我想在应用程序中使用dd/MM/yyyy格式
顺便说一下,我在这个项目中使用Postgres DB(updatedAt的数据类型是“没有时区的时间戳”。

我有一个使用相同代码的类似项目,唯一的区别是该项目使用的是MSSQL server。该项目没有这样的问题。

只有在使用DisplayFor()或EditorFor()时才考虑[DisplatFormat]属性。要使用TextBoxFor()格式化值,需要使用接受格式字符串的重载:


@Html.TextBoxFor(m => m.updatedAt,"{0:dd/MM/yyyy}", new { type = "date" , class = "form-control"}) 


Sergey的回答部分帮助了我。当我输入type=“date”时,文本框变成了一个更好的日期选择器,我可以更新日期。但问题是在我更新之后,文本框上显示的值是“dd/mm/yyyy”然后我发现date类型的html输入元素的日期必须按照ISO8601进行格式化,即:yyyy-MM-dd。 最后,工作的代码是:

@Html.TextBoxFor(model => model.updatedAt, @"{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })

psql
do
SHOW datestyle
select*从pgu设置中name='datestyle';
尝试@Html.TextBoxFor(m=>m.updatedAt,“{0:dd/MM/yyyyy}”,新的{type=“date”,class=“form control”}),我猜你的样式是
MDY
而不是
DMY
@Html.TextBoxFor(model => model.updatedAt, @"{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })