数据校验
确保应用程序接收到的数据符合期望格式和规则,防止不正确或恶意的数据输入,提高应用程序的健壮性和安全性。
数据注解
数据注解(Data Annotations) 一种简单直观的数据校验方式。通过在模型属性上添加特定的注解Attribute
csharp
using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required(ErrorMessage = "Product name is required")]
[StringLength(100, ErrorMessage = "Product name cannot be longer than 100 characters")]
public string Name { get; set; }
[Range(1, 10000, ErrorMessage = "Price must be between $1 and $10000")]
public decimal Price { get; set; }
}
以下是一些内置验证特性:
- Compare:验证模型中的两个属性是否匹配。
- EmailAddress:验证属性是否有电子邮件格式。
- Phone:验证属性是否有电话号码格式。
- Range:验证属性值是否在指定范围内。
- ....
在 System.ComponentModel.DataAnnotations 命名空间中可找到验证特性的完整列表。
Fluent Validation
Fluent Validation 是一个.NET库,它允许你以流畅的接口创建强大的校验规则。这种方式比数据注解提供了更多的灵活性和复杂的校验逻辑。
首先,需要安装Fluent Validation库:
shell
Install-Package FluentValidation.AspNetCore
然后,创建一个继承自AbstractValidator<T>
的校验器类:
csharp
using FluentValidation;
public class ProductValidator : AbstractValidator<Product>
{
public ProductValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Product name is required")
.Length(0, 100).WithMessage("Product name cannot be longer than 100 characters");
RuleFor(x => x.Price).InclusiveBetween(1, 10000).WithMessage("Price must be between $1 and $10000");
}
}
最后,在Startup.cs中配置Fluent Validation:
csharp
services.AddControllers()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<ProductValidator>());
更多关于资料可查阅官方文档。