MVC DisplayFormat日期+时间

时间:2015-11-02 13:31:35

标签: c# asp.net-mvc date annotations

我正在尝试以这种格式显示日期:yyyy-MM-dd HH:mm,但它不起作用(当然yyyy-MM-dd工作正常,问题是时间问题)

MODEL:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd HH:mm}", ApplyFormatInEditMode = true)]
public DateTime eventstart { get; set; }

查看:

<div class="form-group">
        @Html.LabelFor(model => model.eventstart, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.eventstart, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.eventstart, "", new { @class = "text-danger" })
        </div>
</div>

2 个答案:

答案 0 :(得分:1)

我假设您正在使用type="date"生成输入。这将是两个需要注意的问题:

  1. 正如@JonSkeet所指出的,如果你想使用日期时间,那么你需要使用DataType.DateTime。这将导致输入呈现为type="datetime"。使用&#34; date&#34;类型的输入,任何时间组件将被丢弃最好或最坏的将不允许正确解析浏览器日期控件的值,这将我们带到:

  2. HTML5日期时间输入类型(&#34;日期时间&#34;,&#34;日期&#34;,&#34;时间&#34;)要求值为ISO格式,即{ {1}}。浏览器控件将基于解析ISO格式的日期显示用户本地格式的日期/时间,但必须首先以ISO格式给出值。如果不是,则将其视为空,并将输入值显示为空。

答案 1 :(得分:0)

变化:

@Html.EditorFor(model => model.eventstart, 
                new { htmlAttributes = new { @class = "form-control" } })

要:

@Html.EditorFor(model => model.eventstart, 
                new { htmlAttributes = new { @class = "form-control", @type="date" } })

当然可以。