gpt4 book ai didi

c# - 日期时间范围的 ASP MVC 5 客户端验证

转载 作者:太空狗 更新时间:2023-10-29 20:04:35 26 4
gpt4 key购买 nike

我想检查表单中的日期时间字段。该字段在 01/10/2008 和 01/12/2008 之间有效。以下是我定义 viewmodel 属性的方式:

    [Required(ErrorMessage = "The date value is mandatory")]
[DataType(DataType.DateTime)]
[Range(typeof(DateTime), "01/10/2008", "01/12/2008")]
[DisplayName("When the work starts")]
public DateTime StartWork { get; set; }

我想在客户端验证这一点。但我总是出错。我给出值 01/11/2008,它告诉我,日期必须定义在 01/10/2008 和 01/12/2008 之间。我读到没有 jquery 就无法进行客户端验证,不是吗?或者我忘了什么?有什么替代方案可以解决该问题。

最佳答案

我认为您可以在 MVC 中使用自定义验证来实现这一点。尝试使用这个:

[ValidateDateRange]
public DateTime StartWork { get; set; }

这是您的自定义验证实现:

namespace MVCApplication
{

public class ValidateDateRange: ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// your validation logic
if (value >= Convert.ToDateTime("01/10/2008") && value <= Convert.ToDateTime("01/12/2008") )
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Date is not in given range.");
}
}
}
}

更新:

您还可以将日期范围作为参数传递,以使验证成为通用验证:

[ValidateDateRange(FirstDate = Convert.ToDateTime("01/10/2008"), SecondDate = Convert.ToDateTime("01/12/2008"))]
public DateTime StartWork { get; set; }

自定义验证:

    namespace MVCApplication
{

public class ValidateDateRange: ValidationAttribute
{
public DateTime FirstDate { get; set; }
public DateTime SecondDate { get; set; }

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// your validation logic
if (value >= FirstDate && value <= SecondDate)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Date is not in given range.");
}
}
}
}

更新 2:(针对客户端)一个非常简单的 jQuery 逻辑应该进行客户端验证。检查以下内容:

$(document).ready(function(){

$("#btnSubmit").click(function(){

var dt = $("#StartWork").val();

var d = new Date(dt);
var firstDate = new Date("2008-01-10");
var secondDate = new Date("2008-01-12");

if(d>= firstDate && d<= secondDate)
{
alert("Success");
}
else
{
alert("Date is not in given range.");
}

});

});

请检查此 JSFiddle 以查看工作演示:Date Range Validation

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com