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

.NET 6 MVC中DataAnnotations错误本地化:无法设置ErrorMessageResourceType

解决.NET 6 MVC中DataAnnotations复用视图资源文件报错的问题

问题原因

你引用的资源类型不存在,本质是视图对应的.resx文件没有生成对应的强类型C#类,typeof()无法定位到该类型。IViewLocalizer可直接通过路径读取资源文件,但DataAnnotations的ErrorMessageResourceType必须指向由resx生成的强类型类。

解决步骤

1. 配置资源文件生成强类型类

选中目标视图资源文件(比如Resources/Views/Home/Index.resx),右键打开「属性」面板:

  • 将「自定义工具」设置为 ResXFileCodeGenerator
  • 确认「自定义工具命名空间」为 {ProjectName}.Resources.Views.Home(替换{ProjectName}为你的项目根命名空间,例如项目名为BlogApp则填BlogApp.Resources.Views.Home)
  • 保存文件,此时会自动生成对应的.Designer.cs文件,里面包含Index类,封装了资源文件中的所有键值对。

2. 正确引用资源类型

修改DataAnnotations特性的ErrorMessageResourceType参数,使用生成的强类型类:

[Required(ErrorMessageResourceType = typeof({ProjectName}.Resources.Views.Home.Index),
          ErrorMessageResourceName = "RequiredField")]

注意替换{ProjectName}为实际的项目根命名空间,比如项目根命名空间是MyWebApp,则写typeof(MyWebApp.Resources.Views.Home.Index)。

额外说明

如果资源文件命名空间不是默认结构,可在.resx文件的属性面板修改「自定义工具命名空间」,确保typeof()中的路径与生成类的命名空间完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:25:21