【发布时间】:2015-03-06 18:52:21
【问题描述】:
我已经广泛研究了这个问题,但仍然找不到答案。我有一个带有这个日期字段的模型:
[Display(Name = "Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}", NullDisplayText = "")]
[Required]
public Nullable<System.DateTime> ConsumptionDate;
我对这个 EditorFor 有意见:
@Html.EditorFor(model => model.ConsumptionDate)
@Html.ValidationMessageFor(model => model.ConsumptionDate, "*", new { @class = "text-danger" })
但是日期仍然没有被格式化。我尝试过使用和不使用“{0:d}”作为 EditorFor 中的格式,并且我尝试过在模型字段上使用和不使用 [DataType(DataType.Date)] 注释。任何想法我做错了什么?绑定工作正常,我也可以很好地保存数据 - 我只是无法正确格式化。
TIA -VG
【问题讨论】:
-
试试这个格式,我用的是这个:
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] -
我也尝试过“MM-dd-yyyy”格式,但无论我尝试使用哪种日期格式字符串,该格式都不会被应用。
-
你刚才说的和我发的不一样,你应该把目前尝试过的所有格式都贴出来。
-
我不想先显示年份,所以我不会使用您发布的格式。我只尝试了另一种格式。 “d”是我真正需要的,因为在格式化时会考虑到文化。
-
因为您使用
EditorFor()和DateTime,所以呈现的输出应该是<input type="date">,这将使浏览器 负责弄清楚如何显示。例如,Chrome 有一个日期编辑器控件。为了让输入将字符串识别为日期,您需要按照我的建议对其进行格式化。如果你想选择日期的显示方式,你应该使用TextBoxFor()而不是EditorFor()
标签: asp.net-mvc asp.net-mvc-5 editorfor displayformat