c# - ASP.NET MVC 日期时间范围

标签 c# asp.net .net asp.net-mvc datetime

我有一个日期时间输入字段,我想确保用户输入的日期至少晚于 Datetime.Now 24 小时。我试过这个:

    [Range(typeof(DateTime), DateTime.Now.ToString(), DateTime.Now.AddDays(1).ToString())]
    public DateTime EndDate { get; set; }

但是我收到编译器错误,因为值必须是常量。那我该怎么办?

最佳答案

您需要的是自定义验证属性,以便您可以进行比较:

[CustomValidation(typeof (Validator), "ValidateEndTimeRange")]
public DateTime EndDate { get; set; }

然后是你的实际验证器:

namespace MyMVCApp
{
    public class Validator
    {
        public static ValidationResult ValidateEndTimeRange(DateTime endTime)
        {

            if(endTime.EndDate < DateTime.Now || endTime.EndDate > DateTime.Now.AddDays(1)){
                return new ValidationResult("Your end date is outside of the acceptable range.");
            }

            return ValidationResult.Success;
        }
    }
}

关于c# - ASP.NET MVC 日期时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22286560/

相关文章:

asp.net - MVC ViewModel 错误 - 没有为此对象定义无参数构造函数

php - LINQ 与 PDO 类似吗?

asp.net - 帖子中丢失换行符/回车符

.net - F# 中的线程安全普通随机数生成器

c# - 为什么 Entity Framework 在从 View 中选择时创建子查询?

c# - 具有内部构造函数的最小起订量具体类

c# - AutoMapper:Int 到 String 并返回

c# - 使用泛型类型 'IdentityUserRole<TKey>' 需要 1 个类型参数

asp.net - NLog.config复制到根目录和bin目录

c# - 是否有可能获得网站的 swagger 文档的离线版本?