ASP.NET 核心 - 创建自定义模型验证
ASP.NET Core - Create custom model validation
在以前的 ASP.NET MVC 版本中,向模型添加自定义验证的方法是实施 IValidatableObject
并实施您自己的 Validate()
方法。
这是我实现的:
public class BestModelEver: IValidatableObject
{
public DateTime? Birthday { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Birthday.HasValue)
{
yield return new ValidationResult("Error message goes here");
}
}
}
这仍然是向 ASP.NET Core 中的模型添加自定义验证的推荐方法吗?使用 IValidatableObject
具有 System.ComponentModel.DataAnnotations
依赖性。
在 ASP.NET 核心中有两种方法可以进行自定义模型验证:
- 从
ValidationAttribute
继承class 的自定义属性。当您想要将自定义业务逻辑应用于具有属性的特定模型 属性 时,这很有用。
- 为 class 级验证实施
IValidatableObject
。当您需要一次对整个模型进行验证时,请改用它。
documentation 有两者的例子。在您的情况下,IValidatableObject
可能是最好的方法。
在以前的 ASP.NET MVC 版本中,向模型添加自定义验证的方法是实施 IValidatableObject
并实施您自己的 Validate()
方法。
这是我实现的:
public class BestModelEver: IValidatableObject
{
public DateTime? Birthday { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Birthday.HasValue)
{
yield return new ValidationResult("Error message goes here");
}
}
}
这仍然是向 ASP.NET Core 中的模型添加自定义验证的推荐方法吗?使用 IValidatableObject
具有 System.ComponentModel.DataAnnotations
依赖性。
在 ASP.NET 核心中有两种方法可以进行自定义模型验证:
- 从
ValidationAttribute
继承class 的自定义属性。当您想要将自定义业务逻辑应用于具有属性的特定模型 属性 时,这很有用。 - 为 class 级验证实施
IValidatableObject
。当您需要一次对整个模型进行验证时,请改用它。
documentation 有两者的例子。在您的情况下,IValidatableObject
可能是最好的方法。