You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6 Razor Pages中如何使用FormHelper与FluentValidation?

在Razor Pages中结合FluentValidator与FormHelper实现表单验证

从MVC迁移到Razor Pages时,不能再把[FormValidator]特性直接加在处理方法上,根据提示,有两种可行的配置方式:

方式一:给Razor Page模型类添加[FormValidator]特性

直接将特性标注在PageModel派生类上,而非单个处理方法,这样该模型下的所有处理方法都会触发验证逻辑。

示例代码

[FormValidator] // 移至PageModel类级别
public class AddModel : PageModel
{
    // 绑定表单提交的属性,需添加[BindProperty]
    [BindProperty]
    public string Username { get; set; }
    
    [BindProperty]
    public string Email { get; set; }

    public void OnGet()
    {
    }

    public async Task OnPostAsync()
    {
        // 验证失败时返回当前页面,保留表单输入与错误提示
        if (!ModelState.IsValid)
        {
            return Page();
        }

        // 验证通过,执行业务逻辑
        // do something
    }
}

// 对应的FluentValidator验证器,需继承AbstractValidator<对应PageModel>
public class AddModelValidator : AbstractValidator<AddModel>
{
    public AddModelValidator()
    {
        RuleFor(x => x.Username)
            .NotEmpty().WithMessage("用户名不能为空")
            .MinimumLength(3).WithMessage("用户名至少需要3个字符");

        RuleFor(x => x.Email)
            .NotEmpty().WithMessage("邮箱不能为空")
            .EmailAddress().WithMessage("请输入有效的邮箱格式");
    }
}

配置后,当提交表单触发OnPostAsync时,FormHelper会自动调用FluentValidator完成验证,结果同步到ModelState中,直接通过ModelState.IsValid判断即可。

方式二:全局配置FormValidator

如果希望所有Razor Pages都自动启用验证,无需逐个添加特性,可以在全局服务中配置。

示例代码(.NET 6+ Program.cs)

var builder = WebApplication.CreateBuilder(args);

// 注册Razor Pages服务
builder.Services.AddRazorPages();

// 注册FluentValidator自动验证与客户端适配器
builder.Services.AddFluentValidationAutoValidation()
                .AddFluentValidationClientsideAdapters();

// 全局启用FormHelper的验证功能
builder.Services.Configure<FormHelperOptions>(options =>
{
    options.EnableValidation = true;
    // 可根据需求配置其他FormHelper参数,如错误提示样式等
});

var app = builder.Build();

// 中间件配置
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();

app.Run();

全局配置后,所有Razor Page的处理方法都会自动触发验证,只需为每个PageModel创建对应的FluentValidator验证器即可,框架会自动发现并应用规则。

必要前提

确保已安装所需NuGet包:

  • FluentValidation.AspNetCore
  • FormHelper.AspNetCore(根据实际包名调整)

内容的提问来源于stack exchange,提问作者kyenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:48:36