我正在使用以下代码在我的剃刀视图中弹出日历日期
模型
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[DataType(DataType.Date)]
public Nullable<System.DateTime> EndTime { get; set; }
查看
<div class="form-group">
@Html.LabelFor(model => model.EndTime, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-4">
@Html.EditorFor(model => model.EndTime, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.EndTime, "", new { @class = "text-danger" })
</div>
</div>
现在我想使用 DateTime 而不是Date.What应该是DataFormat字符串吗?
我的尝试
Display(Name = "End Date Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}{1:HH/mm}")]
[DataType(DataType.DateTime)]
我的格式异常?
答案 0 :(得分:1)
由于EditorFor()
属性,type="date"
方法会使用[DataType(DataType.Date)]
呈现输入,这会生成浏览器HTML-5日期选择器(但这仅在Chrome和Edge中支持)。
要生成HTML-5 datetimepicker,您需要使用type = "datetime-local"
呈现输入,但没有数据注释属性。相反,您需要自己生成type
属性。
@Html.TextBoxFor(m => m.EndTime, "{0:s}", new { @type = "datetime-local", @class = "form-control" })
注意"{0:s}"
是"{0:yyyy-MM-ddTHH:mm:ss}"
的快捷方式,会在浏览器文化中显示日期和时间。另请注意,您不需要[DataType]
属性或ApplyFormatInEditMode = true
属性中的[DisplayFormat]
属性,因为它们仅适用于EditorFor()