c# - asp.net core 默认 ErrorMessageResourceName 和 Type
问题描述
我有这堂课:
public class CategoryViewModel
{
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(100, ErrorMessageResourceName = "IdStringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Id { get; set; }
[Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(255, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Name { get; set; }
[StringLength(255, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Image { get; set; }
public bool Active { get; set; }
}
如您所见,它有来自我的Resources.resx文件的自定义错误消息。我将要创建更多模型,如果我不必为每个模型指定ErrorMessageResourceName
and ,我会喜欢它。ErrorMessageResourceType
我想设置所有必需的属性来使用我的RequiredErrorMessage和我的StringLength属性来使用StringLengthErrorMessage。
这可能吗?
解决方案
如 ASP.NET Core 文档中所述,可以在启动文件中配置数据注释本地化,然后您可以在属性标签内提供错误消息。
1.配置数据注释本地化使用共享资源文件,一个名为SharedResources的虚拟类用于共享资源:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddViewLocalization(o => o.ResourcesPath = "Resources")
.AddDataAnnotationsLocalization(o =>
{
var type = typeof(SharedResources);
var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
var factory = services.BuildServiceProvider().GetService<IStringLocalizerFactory>();
var localizer = factory.Create("SharedResources", assemblyName.Name);
o.DataAnnotationLocalizerProvider = (t, f) => localizer;
});
- 您可以添加如下资源文件:
3.通过相关属性修饰模型的所有属性来修改模型
public class EmuItem
{
public int Id { get; set; }
public string SearchName { get; set; }
[Required(ErrorMessage = "Please enter value for {0}")]
public string Name { get; set; }
public int Age { get; set; }
}
参考:http ://www.ziyad.info/en/articles/16-Localizing_DataAnnotations
推荐阅读
- javascript - 在异步函数中使用 done 参数时测试不会失败
- python - 如何从嵌套列表中删除循环(无限)符号?
- r - 在 shiny.io 上下载 wordcloud2 输出不起作用
- php - 不要渲染 bitrix 组件
- three.js - 沿椭圆路径移动对象
- java - 如何在继续之前等待方法调用完成
- jdbc - 从缓冲区获取结果时出错。Simba JDBC BigQuery 驱动程序
- angular - 错误消息在 ngx-datatable 中无法正常工作
- javascript - JavaScript PDF 电子邮件不提示
- android - Android中的LTR抽屉导航菜单项