代码之家  ›  专栏  ›  技术社区  ›  Steve

用于DataAnnotations本地化的单个资源文件

  •  5
  • Steve  · 技术社区  · 7 年前

    净核心

    我在我的每个实体上都有数据注释,我需要本地化错误时返回的消息。似乎 就是为每个实体提供不同的resx文件。

    该文件根据实体的命名空间命名,并带有区域性标识符和resx扩展名。因此,如果我有一个名为 客户 数据.实体 ,我应该添加一个名为 把意大利语的所有译文都放进去。如果我有一个属性

    StringLength(50, ErrorMessage="The {0} should not be longer than {1} characters") 
    public string Name {get;set;}
    

    Data.Entities.Customers.it.resx 文件

    供应商 我被迫写另一个名为 Data.Entities.Suppliers.it.resx 当然,我有

    StringLength(50, ErrorMessage="The {0} should not be longer than {1} characters") 
    public string SupplierName {get;set;}
    

    因此,我希望能够很好地解释我的问题,我的问题是:有一种方法可以为所有实体验证消息指定一个资源文件,然后为公共文本编写一次消息?

    1 回复  |  直到 7 年前
        1
  •  2
  •   DavidG    7 年前

    docs ,您可以告诉框架使用共享资源进行数据注释本地化:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
            .AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) =>
                    factory.Create(typeof(SharedResource));
            });
    }
    

    SharedResource 是与存储验证消息的resx相对应的类。采用这种方法, DataAnnotations 共享资源