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

ASP.NET数据注解本地化问题:无法加载对应语言资源如何解决?

ASP.NET数据注解本地化错误消息不切换语言的解决方案

1. 验证资源文件配置规范

  • 生成操作设置:确保DataAnnotationsLocalization.uk.resx的生成操作是嵌入的资源(右键文件→属性→生成操作),框架需要将附属资源嵌入程序集才能正确加载。
  • 命名空间一致性:DataAnnotationsLocalization.resx生成的Designer.cs命名空间,要与DataAnnotationsLocalization.uk.resx的「自定义工具命名空间」完全一致(右键uk.resx→属性→自定义工具命名空间),否则框架无法关联不同语言的资源文件。
  • 资源键完全匹配:页面模型中[MinLength]的资源键(LocationAddressFormatError)要与两个资源文件中的键完全一致,包括大小写。

2. 正确配置AddDataAnnotationsLocalization

默认的本地化配置可能未明确指定资源提供者,需要显式关联你的资源类。在Program.cs中调整配置:

// 如果资源文件放在Resources文件夹下,指定资源路径
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

builder.Services.AddControllersWithViews()
    .AddDataAnnotationsLocalization(options =>
    {
        // 指定数据注解使用的资源类
        options.DataAnnotationLocalizerProvider = (type, factory) =>
            factory.Create(typeof(DataAnnotationsLocalization));
    });

注意:typeof(DataAnnotationsLocalization)要对应Designer.cs生成的类的完整类型(包含命名空间)。

3. 改用强类型资源引用(推荐)

不要直接在ErrorMessage中写资源键,改用ErrorMessageResourceName和ErrorMessageResourceType明确指定资源来源,避免框架误将键值当成直接文本:

using YourProjectNamespace.Resources; // 替换为你的资源类命名空间

public class YourPageModel : PageModel
{
    [MinLength(10, 
        ErrorMessageResourceName = "LocationAddressFormatError", 
        ErrorMessageResourceType = typeof(DataAnnotationsLocalization))]
    public string Address { get; set; }
}

4. 确认文化中间件配置顺序

确保请求本地化中间件在路由之前执行,保证文化在请求初期就被正确设置:

var supportedCultures = new[] { "en", "uk" };
var localizationOptions = new RequestLocalizationOptions()
    .SetDefaultCulture(supportedCultures[0])
    .AddSupportedCultures(supportedCultures)
    .AddSupportedUICultures(supportedCultures);

// 必须放在UseRouting之前
app.UseRequestLocalization(localizationOptions);
app.UseRouting();

5. 修复Designer.cs生成问题

如果Designer.cs断点未触发,说明框架未通过生成的类访问资源:

  • 右键DataAnnotationsLocalization.resx→「运行自定义工具」,重新生成Designer.cs。
  • 确认该resx文件的「自定义工具」设置为PublicResXFileCodeGenerator(公共资源)或ResXFileCodeGenerator,确保生成对应的强类型类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:55:29