gpt4 book ai didi

c# - 试图了解如何将变量传递给自定义验证?

转载 作者:太空宇宙 更新时间:2023-11-03 15:16:30 25 4
gpt4 key购买 nike

我正在尝试了解如何将数据传递到我创建的自定义验证。

我有这个模型。

public class MyModel
{
[Required(ErrorMessage="Please enter a Start Date")]
public DateTime StartDate { get; set; }

[Required(ErrorMessage="Please enter an End Date")]
[CustomValidation(typeof(DateCompareValidation), "ValidateDates")]
public DateTime EndDate { get; set; }
}

这是我的验证器。

public class DateCompareValidation
{
public static ValidationResult ValidateDates(object value, ValidationContext context)
{
return new ValidationResult("You are wrong");
}
}


我第一次使用 public static ValidationResult ValidateDates() 时出错了

"..must match the expected signature: public static ValidationResult ValidateDates(object value, ValidationContext context)." 

所以我添加了必要的参数。

现在调试类我看到变量“值”有我的结束日期。
不太明白它是怎么知道需要什么参数的。
此外,我想知道如何传递开始日期或 MyModel 类,以便处理验证逻辑?

最佳答案

向类添加逻辑并实现 IValidateObject 怎么样?

   public class MyClass : IValidatableObject
{
[Required(ErrorMessage="Please enter a Start Date")]
public DateTime? StartDate { get; set; }

[Required(ErrorMessage="Please enter an End Date")]
public DateTime? EndDate { get; set; }

public IEnumerable<ValidationResult> Validate(ValidationContext context)
{
if (EndDate < StartDate)
{
yield return new ValidationResult("Invalid date range: End date must be greater then the Start Date");
}
}
}

关于c# - 试图了解如何将变量传递给自定义验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873885/

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