限制日期时间选择器的范围
Restrict the range of datetime picker
我正在使用 ASP.NET CORE MVC 和 EF CORE。
下面的代码允许我在日期时间选择器中 select 日期时间。但是,我想这样做,以便用户无法 select 当前日期时间之前 5 天和之前 3 小时的任何日期时间。
假设我找不到我的 DateTimePicker 的 JQuery 代码,我该如何限制日期时间?
查看:
<div class="form-group">
<label asp-for="DateTime" class="control-label"></label>
<input asp-for="DateTime" class="form-control" />
<span asp-validation-for="DateTime" class="text-danger"></span>
</div>
型号(如果需要):
[Required(ErrorMessage = "Please Enter The Date/Time ..")]
[Display(Name = "Date/Time")]
public DateTime DateTime { get; set; }
控制器:
public IActionResult CreateTest()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateTest([Bind("ID,DateTime")] TestModel testModel)
{
if (ModelState.IsValid)
{
testModel.ID = Guid.NewGuid();
_context.Add(testModel);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(testModel);
}
您可以构建自定义 Validation attribute
来设置日期范围。
[Required(ErrorMessage = "Please Enter The Date/Time ..")]
[Display(Name = "Date/Time")]
[ValidateDateRange]
public DateTime DateTime { get; set; }
这里是ValidateDateRange
的代码。
public class ValidateDateRange : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime dt = (DateTime)value;
if (dt <= DateTime.Now.AddDays(-5).AddHours(-3))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Date is not in given range.");
}
}
}
Screenshots of test
指向 Validation attributes 的链接。
我正在使用 ASP.NET CORE MVC 和 EF CORE。
下面的代码允许我在日期时间选择器中 select 日期时间。但是,我想这样做,以便用户无法 select 当前日期时间之前 5 天和之前 3 小时的任何日期时间。
假设我找不到我的 DateTimePicker 的 JQuery 代码,我该如何限制日期时间?
查看:
<div class="form-group">
<label asp-for="DateTime" class="control-label"></label>
<input asp-for="DateTime" class="form-control" />
<span asp-validation-for="DateTime" class="text-danger"></span>
</div>
型号(如果需要):
[Required(ErrorMessage = "Please Enter The Date/Time ..")]
[Display(Name = "Date/Time")]
public DateTime DateTime { get; set; }
控制器:
public IActionResult CreateTest()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateTest([Bind("ID,DateTime")] TestModel testModel)
{
if (ModelState.IsValid)
{
testModel.ID = Guid.NewGuid();
_context.Add(testModel);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(testModel);
}
您可以构建自定义 Validation attribute
来设置日期范围。
[Required(ErrorMessage = "Please Enter The Date/Time ..")]
[Display(Name = "Date/Time")]
[ValidateDateRange]
public DateTime DateTime { get; set; }
这里是ValidateDateRange
的代码。
public class ValidateDateRange : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime dt = (DateTime)value;
if (dt <= DateTime.Now.AddDays(-5).AddHours(-3))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Date is not in given range.");
}
}
}
Screenshots of test
指向 Validation attributes 的链接。