C# 限制用户使用DataAnnotation选择几分钟或几秒的日期时间?
我有一个“面试”模型,用户必须能够安排面试,但面试需要每小时进行一次。因此,用户只能选择小时,分/秒默认为零。如何使用DataAnnotation实现这一点?以下是我面试模型中的代码:C# 限制用户使用DataAnnotation选择几分钟或几秒的日期时间?,c#,asp.net,asp.net-mvc,datetime,data-annotations,C#,Asp.net,Asp.net Mvc,Datetime,Data Annotations,我有一个“面试”模型,用户必须能够安排面试,但面试需要每小时进行一次。因此,用户只能选择小时,分/秒默认为零。如何使用DataAnnotation实现这一点?以下是我面试模型中的代码: [Display(Name = "Interview Time")] [DataType(DataType.Time)] [DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Som
[Display(Name = "Interview Time")]
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Something here?
public DateTime InterviewTime { get; set; }
如果最终无法使用DataAnnotations来完成此操作,则可以使用备份字段并在setter中进行验证
private DateTime _interviewTime;
[Display(Name = "Interview Time")]
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Something here?
public DateTime InterviewTime {
get {
return _interviewTime;
}
set {
if (value.Minute != 0 || value.Second != 0 || value.Millisecond != 0) {
//either strip minutes/seconds/milliseconds or throw exception
}
_interviewTime = value;
}
}
如果最终无法使用DataAnnotations来完成此操作,则可以使用备份字段并在setter中进行验证
private DateTime _interviewTime;
[Display(Name = "Interview Time")]
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Something here?
public DateTime InterviewTime {
get {
return _interviewTime;
}
set {
if (value.Minute != 0 || value.Second != 0 || value.Millisecond != 0) {
//either strip minutes/seconds/milliseconds or throw exception
}
_interviewTime = value;
}
}
如果输入的分钟/秒不是
0
,则可以使用ReqularExpressionAttribute
显示验证错误,但是更好的UI可能会让我使用具有两个属性的视图模型DateTime Date
和TimeSpan Time
,并使用日期选择器选择日期和下拉列表来呈现可用的小时数(以显示9.00、10.00等选项)并在保存时将这些值组合到数据模型sDateTime
属性中。如果输入的分钟/秒不是0
,则可以使用ReqularExpressionAttribute
显示验证错误,但是更好的UI可能会让我使用具有两个属性的视图模型DateTime-Date
和TimeSpan-Time
,并使用日期选择器选择日期和下拉列表来呈现可用的小时数(以显示9.00、10.00等选项),并在保存时将值合并到数据模型sDateTime
属性中