【问题标题】:Time Input Field in ASP.NET MVCASP.NET MVC 中的时间输入字段
【发布时间】:2013-04-13 09:42:40
【问题描述】:

我在尝试使用 ASP.NET MVC 4 编写带有时间字段的表单时遇到问题。

型号:

class Abcde {
    [DataType(DataType.Time)]
    public DateTime ATime { get; set; }
}

View.cshtml

...
@Html.EditorFor(m => m.ATime)
@Html.ValidationMessageFor(m => m.ATime)

当我尝试输入时间 (hh:nn:ss) 时,验证总是失败,并说它不是正确的格式,所以我必须输入一个日期。 我的问题是我应该将类型更改为TimeSpan 吗?或者有没有其他办法?

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    实际上这对我有用。

    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
    public DateTime Hour { get; set; }
    

    【讨论】:

      【解决方案2】:
      [Required]
      [DataType(DataType.Time)]
      [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:H:mm}")]
      public DateTime Time { get; set; }`
      

      试试这个,你可以按照你希望它为你工作的方式格式化 DataFormatString,我现在在一个项目中使用它,它对我有用。

      【讨论】:

      • 对我不起作用,在文本框中得到“--:-- --”,没有选择器。检查源代码为 html 值提供了预期的“4:00”。
      【解决方案3】:

      用途:

      [Required]
      [DataType(DataType.Time)]
      [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm:ss}")]
      public DateTime FieldTime{ get; set; }
      

      您需要将您的日期验证与此注释在内部工作的格式相匹配。因此,添加传递字符串模式的 ApplyFormat 即可。

      【讨论】:

      • 这可能是正确答案,但请解释为什么这是正确答案:)
      • @Willian 写一些解释你的代码是什么以及为什么。谢谢
      【解决方案4】:
      [Required]
      [DataType(DataType.Time)]
      [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
      public DateTime Time { get; set; }
      

      这段代码是正确的。但它仅在您使用EditorFor 而不是TextBoxFor 时有效。

      【讨论】:

        猜你喜欢
        • 2017-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多