Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 限制用户使用DataAnnotation选择几分钟或几秒的日期时间?_C#_Asp.net_Asp.net Mvc_Datetime_Data Annotations - Fatal编程技术网

C# 限制用户使用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

我有一个“面试”模型,用户必须能够安排面试,但面试需要每小时进行一次。因此,用户只能选择小时,分/秒默认为零。如何使用DataAnnotation实现这一点?以下是我面试模型中的代码:

    [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等选项)并在保存时将这些值组合到数据模型s
DateTime
属性中。如果输入的分钟/秒不是
0
,则可以使用
ReqularExpressionAttribute
显示验证错误,但是更好的UI可能会让我使用具有两个属性的视图模型
DateTime-Date
TimeSpan-Time
,并使用日期选择器选择日期和下拉列表来呈现可用的小时数(以显示9.00、10.00等选项),并在保存时将值合并到数据模型s
DateTime
属性中