在模型中使用DateTime

时间:2017-04-13 10:56:39

标签: c# asp.net-mvc format-string

我正在使用以下代码在我的剃刀视图中弹出日历日期

模型

[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)]

我的格式异常?

1 个答案:

答案 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()