【问题标题】:ASP.NET Core data annotation localization when models are in a different assembly模型位于不同程序集中时的 ASP.NET Core 数据注释本地化
【发布时间】:2019-10-08 20:23:53
【问题描述】:

我有 ASP.NET Core 3.0 Razor Pages 应用程序。只要所有代码都在主程序集中,本地化就可以正常工作。但是,如果我将模型类移动到另一个库程序集中,数据注释本地化将不再起作用。

在这种情况下如何配置本地化?在哪里放置 .resx 文件?在主程序集的资源文件夹中或库程序集中的某个位置。我应该如何命名资源文件?

public class Message
{
  [Display(Name = "ID")]
  public int Id { get; set; }

  [Display(Name = "Message text")]
  public string Text { get; set; }

  [Display(Name = "Create date")]
  public DateTime Created { get; set; }
}

此 Message 类位于不同的程序集中。 这是 m 当前的配置。

public void ConfigureServices(IServiceCollection services)
{
  services.AddScoped<MessageService, MessageService>();

  services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });

  services.AddRazorPages()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
    .AddDataAnnotationsLocalization();
}

【问题讨论】:

  • 请问解决方法是什么?
  • 我找不到任何解决方案,所以我将我的课程放在一个程序集中:-(

标签: asp.net localization annotations


【解决方案1】:

我在几个小时后才开始工作,我以此为基础:

https://dejanstojanovic.net/aspnet/2019/april/localization-of-the-dtos-in-a-separate-assembly-in-aspnet-core/

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1

我根据最新版本的要求更新了它以反对 services.AddRazorPages() 而不是 .AddMVC。我现在可以在我实现标准解决方案的主库(用于视图本地化)和用于模型等的类库(如您的消息类)中拥有 Resources 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 2023-03-13
    • 2017-06-22
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多