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
doSHOW 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" })