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

.NET 8 Razor Pages如何修改数据注解默认错误消息及小数分隔符

.NET 8 Razor Pages 全局修改表单验证错误语言及小数分隔符方案

一、全局替换DataAnnotations默认验证消息语言

无需逐个修改模型类添加特性,通过全局配置+资源文件实现多语言验证消息:

1. 安装对应语言的DataAnnotations包

以意大利语为例,安装NuGet包:

Install-Package Microsoft.AspNetCore.Mvc.DataAnnotations.it

2. 配置Program.cs的本地化服务

在Program.cs中添加本地化配置,指定资源文件路径并全局绑定数据注解本地化:

var builder = WebApplication.CreateBuilder(args);

// 配置本地化资源路径(对应项目根目录的Resources文件夹)
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

builder.Services.AddRazorPages()
    .AddDataAnnotationsLocalization(options =>
    {
        // 全局使用统一的资源文件,无需每个模型单独关联
        options.DataAnnotationLocalizerProvider = (type, factory) =>
            factory.Create(typeof(DataAnnotationsResources));
    });

// 设置请求本地化规则,默认语言为意大利语
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[]
    {
        new System.Globalization.CultureInfo("it-IT"),
        new System.Globalization.CultureInfo("en-US")
    };

    options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("it-IT");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});

var app = builder.Build();

// 启用请求本地化中间件(必须放在路由中间件之前)
app.UseRequestLocalization();

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

app.Run();

3. 创建本地化资源文件

在项目根目录创建Resources文件夹,添加DataAnnotations.it.resx资源文件,填入需要替换的验证消息键值对(键为DataAnnotations默认的验证消息标识):

键名意大利语值
RequiredIl campo {0} è obbligatorio.
StringLengthIl campo {0} deve essere compreso tra {2} e {1} caratteri.
DecimalIl campo {0} deve essere un numero decimale.

二、解决小数分隔符验证问题

要让模型绑定和验证支持逗号作为小数分隔符,需确保请求文化生效并配置模型绑定规则:

1. 确保请求文化正确应用

上文的RequestLocalizationOptions配置已默认使用it-IT文化,该文化默认使用逗号作为小数分隔符,模型绑定会自动适配。

2. 客户端验证适配

客户端验证默认使用英文规则,需引入对应语言的jquery.validate本地化脚本:

  1. 下载意大利语本地化脚本(messages_it.min.js),放到wwwroot/lib/jquery-validation/localization/目录下
  2. 修改_ValidationScriptsPartial.cshtml,添加本地化脚本引用:
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<script src="~/lib/jquery-validation/localization/messages_it.min.js"></script>

效果验证

完成配置后:

  • 提交空表单时,Nome和Cognome字段会显示意大利语的必填错误提示
  • 输入带逗号的小数(如123,456)时,模型绑定和验证会正常识别,无需使用点分隔符

内容的提问来源于stack exchange,提问作者Giorgio F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:36:03