将最小和最大日期范围设置为日期时间输入

Nig*_*ale 6 asp.net-mvc datetime asp.net-core

有没有办法在视图模型中设置 DateTime 的范围,使输入的最大可能日期为当前日期和时间(UTC),最小日期可能为一年前

就像是[Range(typeof(DateTime), "06/06/2020 23:43", "Utc.Now")]

先感谢您。

Yin*_*qiu 6

如果您想限制用户输入,您可以在视图上进行以下设置。

<input asp-for="SelectedDate" max="@DateTime.Now.ToString("yyyy-MM-ddThh:mm")" min="@DateTime.Now.AddYears(-1).ToString("yyyy-MM-ddThh:mm")" />
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

  • 您可以查看这篇[文章](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local)。 (2认同)

Maj*_*uri 6

如果您想在服务器端验证日期时间范围,您可以定义一个自定义属性来验证您的属性值。

    public class ValidateDate: ValidationAttribute
    {
        protected override ValidationResult IsValid
                         (object date, ValidationContext validationContext)
        { 
             return (date<= DateTime.Now && date >= DateTime.Now.AddYears(-1))
                 ? ValidationResult.Success
                 : new ValidationResult("Invalid date range"); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

你的财产应该用属性来装饰

[ValidateDate]
public DateTime MyDate{get; set;}
Run Code Online (Sandbox Code Playgroud)