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

ASP.NET Core非侵入式验证自定义错误类服务端验证失效问题

解决ASP.NET Core服务端验证自定义Bootstrap类不生效的问题

要让服务端验证也使用is-invalid和is-valid类,需要在ASP.NET Core的服务配置中覆盖默认的验证CSS类——因为服务端的标签助手(Tag Helper)默认使用input-validation-error和input-validation-valid类,和客户端验证的配置不互通。

步骤1:配置ASP.NET Core服务端验证类

在Program.cs(.NET 6+)或Startup.cs(.NET 5及更早版本)中,修改MvcOptions的HtmlHelperOptions,指定自定义的验证类:

// Program.cs 示例
var builder = WebApplication.CreateBuilder(args);

// 添加Razor Pages/MVC服务并配置验证类
builder.Services.AddRazorPages()
    .AddMvcOptions(options =>
    {
        // 设置服务端验证失败时输入框的错误类
        options.HtmlHelperOptions.ValidationInputCssClassName = "is-invalid";
        // 设置服务端验证通过时输入框的有效类(可选)
        options.HtmlHelperOptions.ValidationValidCssClassName = "is-valid";
    });

var app = builder.Build();

// ... 其他中间件配置 ...

app.Run();

步骤2:保留现有客户端验证配置

你已有的客户端验证配置无需修改,它会继续控制前端验证的类:

const validationCustomSettings = {
        validClass: "is-valid",
        errorClass: "is-invalid"
};
jQuery.validator.setDefaults(validationCustomSettings);    
jQuery.validator.unobtrusive.options = validationCustomSettings;

可选:优化验证消息的Bootstrap样式

为了让验证消息完全符合Bootstrap的样式规范,建议将asp-validation-for标签的text-danger类替换为invalid-feedback:

<!-- 原代码 -->
<span asp-validation-for="ADR.TTIS" class="text-danger"></span>

<!-- 修改后 -->
<span asp-validation-for="ADR.TTIS" class="invalid-feedback"></span>

完成以上配置后,服务端验证失败时输入框会自动添加is-invalid类,和客户端验证的效果完全一致,同时验证消息也会以Bootstrap标准的错误提示样式显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:36:05