.NET Core中Buddy类的DisplayAttribute不生效问题排查
问题排查与解决
嘿,我瞅了下你的代码,问题其实很明显——你给Category类配置了元数据关联,但完全忘了给Blogs实体类做同样的操作!这就是DisplayAttribute没在视图里生效的核心原因,ASP.NET Core根本不知道你定义的BlogsMetadata要和哪个实体绑定。
具体修复步骤:
1. 给Blogs类添加元数据关联特性
修改你的Blogs实体类,补上[ModelMetadataType]特性,同时记得引用元数据类所在的命名空间:
using KuteCore.Models.MetaData; // 必须添加这个命名空间引用 namespace KuteCore.Models { [ModelMetadataType(typeof(BlogsMetadata))] // 关键:添加这行关联特性 public partial class Blogs { public int BlogId { get; set; } public string Title { get; set; } public string Description { get; set; } } }
2. 确认字段匹配性(你的代码已经没问题)
检查BlogsMetadata里的字段名称、类型是否和Blogs实体类完全一致(C#是大小写敏感的),你的代码里Title和Description都是严格匹配的,这部分不用改。
3. 验证修复效果
重新运行项目后,视图里的@Html.LabelFor(model => model.Title)应该会显示你定义的"عنوان",同时Required特性的错误信息"خطااا"也会在输入为空时正常触发显示。
额外小提示
- 你那段Category相关的元数据关联代码是冗余的(如果没用到的话),可以直接删掉,不影响当前问题的修复
- 如果之后要做多语言本地化,记得配置项目的本地化服务,但现在只是显示固定波斯语文本,只要关联正确就会生效
内容的提问来源于stack exchange,提问作者Morteza Jangjoo
相关产品推荐
相关产品推荐

