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

如何使用FluentValidation覆盖int类型InputNumber的默认错误提示信息?

解决InputNumber验证时无法覆盖默认数字错误消息的问题

出现默认的"The field FieldName must be a number."提示,是因为空值触发的是ASP.NET Core模型绑定阶段的类型转换错误,此时FluentValidation的NotEmpty/NotNull规则还没执行,所以自定义消息不会生效。以下是几种可行的解决方式:

方法1:将字段改为可空数字类型

把模型中的数字字段改成可空类型(如int?、decimal?),这样空值能成功绑定到模型,FluentValidation的规则就会触发,自定义消息就能正常显示:

模型类

public class YourModel
{
    public int? FieldName { get; set; }
}

验证器规则

RuleFor(model => model.FieldName)
    .NotNull().WithMessage("请输入数字")
    .NotEmpty().WithMessage("请输入数字");

方法2:覆盖模型绑定的默认错误消息

直接配置ASP.NET Core的模型绑定消息,替换默认的类型转换错误提示:

// 在Program.cs/Startup.cs中配置
builder.Services.AddControllersWithViews()
    .AddMvcOptions(options =>
    {
        // 替换"必须是数字"的默认提示
        options.ModelBindingMessageProvider.SetValueMustBeANumberAccessor(
            fieldName => $"字段 {fieldName} 请输入有效的数字");
    });

方法3:使用FluentValidation的Must规则自定义检查

同样需要字段为可空类型,通过Must规则手动验证值是否存在:

RuleFor(model => model.FieldName)
    .Must(value => value.HasValue)
    .WithMessage("请填写有效的数字内容");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:40:24