在 C# 项目里,使用 Fluent Validation 可以很方便地通过 Length 方法对字符串属性设置最小长度和最大长度验证,避免手写大量判断逻辑。下面先看一个基础示例。

基础长度验证写法
假设我们有一个用户注册模型,其中包含用户名属性,要求长度在 3 到 20 之间。可以定义如下验证器:
using FluentValidation;
public class UserModel
{
public string UserName { get; set; }
}
public class UserValidator : AbstractValidator<UserModel>
{
public UserValidator()
{
// 最小长度3,最大长度20
RuleFor(x => x.UserName)
.Length(3, 20)
.WithMessage("用户名长度必须介于 3 到 20 个字符之间");
}
}
上面代码中,Length(3, 20) 就是同时指定了最小长度和最大长度。如果传入的字符串长度小于 3 或大于 20,就会触发后面定义的错误消息。
只限制最小或最大长度
如果业务上只需要限制一边,也可以只传一个参数:
- 只限制最小长度:使用
Length(5)表示至少 5 个字符 - 只限制最大长度:使用
MaximumLength(10)或Length(0, 10)
public class ProductValidator : AbstractValidator<ProductModel>
{
public ProductValidator()
{
RuleFor(x => x.Name)
.MinimumLength(2)
.WithMessage("产品名称至少 2 个字符");
RuleFor(x => x.Desc)
.MaximumLength(100)
.WithMessage("描述不能超过 100 个字符");
}
}
在 ASP.NET Core 中使用
注册验证器后,Controller 接收模型时会自动执行验证,失败时返回 400 错误:
// Program.cs 中注册
builder.Services.AddControllers()
.AddFluentValidation(fv =>
fv.RegisterValidatorsFromAssemblyContaining<UserValidator>());
当提交的 UserName 长度不符合要求时,接口会直接返回验证错误信息,不需要在业务代码里手动调用验证方法。
小结
通过 Fluent Validation 的 Length、MinimumLength 和 MaximumLength 方法,可以清晰、可维护地实现 C# 属性的最小长度和最大长度验证,减少重复代码并提升可读性。
Fluent_ValidationC#length_validation修改时间:2026-07-30 06:54:16