【问题标题】:MVC DisplayFormat Date + TimeMVC DisplayFormat 日期 + 时间
【发布时间】:2015-11-02 13:31:34
【问题描述】:

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

型号:

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

【问题讨论】:

  • 那么会发生什么?为什么要尝试将日期显示为日期和时间?如果您想要日期和时间,请使用DataType.DateTime...
  • 什么也没发生。该字段看起来没有任何注释。
  • 那么显示什么?那么其他问题的答案呢?
  • 只显示空字段(没有任何日期格式)我尝试使用DataType.DateTime。还是什么都没有
  • @Piter 你在初始化值吗?

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


【解决方案1】:

我假设您使用type="date" 生成输入。有两个问题需要注意:

  1. 正如@JonSkeet 指出的那样,如果你想使用日期时间,那么你需要使用DataType.DateTime。这将导致输入呈现为type="datetime"。使用“日期”类型的输入,任何时间组件都将被丢弃,或者最坏的情况是不允许浏览器日期控件正确解析该值,这使我们:

  2. HTML5 日期时间输入类型(“日期时间”、“日期”、“时间”)要求值采用 ISO 格式,即YYYY-MM-DDTHH:MM:SSZ。浏览器控件将基于解析 ISO 格式的日期以用户的本地格式显示日期/时间,但必须首先以 ISO 格式给出值。如果不是,则将其视为null,并将输入值显示为空。

【讨论】:

  • 请注意,HTML5 type="datetime" 目前不支持(参考comparison
  • 我认为唯一的解决方案是 3 个属性。第一个:[DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime eventstart { get; set; } 第二个:[DataType(DataType.Time)] [DisplayFormat(DataFormatString = "{0:HH:mm}", ApplyFormatInEditMode = true)] public DateTime eventstart { get; set; } 第三个:合并第一个和第二个属性
【解决方案2】:

变化:

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

收件人:

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

肯定会成功的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多