【发布时间】:2016-05-27 03:04:51
【问题描述】:
我是 MVC 的新手。我有一个日期时间属性和数据注释,如下所示:
[ReadOnly(true)]
[DataType(DataType.DateTime), DisplayFormat(ApplyFormatInEditMode = true, ConvertEmptyStringToNull = true, DataFormatString = "{0: dd/MMM/yyyy HH:mm:ss}", HtmlEncode = true, NullDisplayText = "-")]
[DisplayName("Last Update")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Last Update is required.")]
public DateTime LastUpdate { get; set; }
在创建页面时显示良好。但是当我提交时,我收到验证错误消息“字段 Last Update 必须是日期”,并且无法处理数据。然后我必须将输入格式更改为“yyyy/MM/dd”并且没有时间提交。
我正在使用@Html.EditorFor()。如何使用 EditorFor() 在创建页面中显示日期格式(dd/MMM/yyyy),并在索引页面中显示日期时间格式(dd/MMM/yyyy HH:mm:ss)?或者当 EditorFor 取值日期时间格式如 (dd/MMM/yyyy HH:mm:ss) 时如何通过验证?
【问题讨论】:
-
您可以使用
@Html.TextBoxFor(m => m.LastUpdate, "{0:dd/MM/yyyy}")。另请注意,您的大多数属性都不是必需的。删除[DataType(DataType.DateTime)、ApplyFormatInEditMode = true、ConvertEmptyStringToNull = true和NullDisplayText = "-"。如果您确实想要浏览器的 HTML-5 编辑器,那么它需要是`@Html.TextBoxFor(m => m.LastUpdate, "{0:yyyy-MM-dd}", new { type = "date" }),但它仅在 Chrome 和 Edge 中受支持
标签: c# asp.net-mvc date datetime asp.net-mvc-5