【发布时间】:2013-09-04 22:21:43
【问题描述】:
我正在构建一个日程安排屏幕,需要显示一个时间字段供用户输入日程安排的时间。
我不确定这是否是最佳选择,但我正在为该字段使用 TimeSpan。为了验证输入,我想使用 Range 属性和 DisplayFormat 属性。
当我调试并输入一个看似有效的值时,Range 属性指示一个超出范围的错误。谁能看到我做错了什么? TimeSpan 是否适合这种用法?非常感谢任何帮助。
模型类:
public class Schedule
{
public Schedule()
{
this.ScheduleTime = new TimeSpan(0, 0, 0);
}
/// <summary>
/// The time of day for the schedule to run
/// </summary>
[Required, DataType(System.ComponentModel.DataAnnotations.DataType.Time),
Display(Name = "Schedule Time", Description = "Number of Hours and Minutes after Midnight Central Timezone"),
DisplayFormat(DataFormatString = @"{0:hh\:mm\:ss}", ApplyFormatInEditMode = true),
Range(typeof(TimeSpan), "00:00", "23:59")]
public TimeSpan ScheduleTime { get; set; }
}
错误信息:
【问题讨论】:
-
我不确定验证方面,但我会使用
DateTime对象 -TimeSpan表示持续时间,而DateTime表示实际时间。 -
感谢@TheEvilPenguin,我考虑过使用 DateTime,但我认为我必须创建一个自定义属性来验证时间。另外,我使用的 API 有这个值作为 TimeSpan,所以幸运的是我找到了我在回答中提到的帖子,它似乎工作正常。
标签: c# asp.net-mvc data-annotations