C# asp net核心2中的数据注释本地化

C# asp net核心2中的数据注释本地化,c#,asp.net-core,localization,data-annotations,C#,Asp.net Core,Localization,Data Annotations,我正在尝试实现这一点: 我的代码: Startup.cs public void ConfigureServices(IServiceCollection services) { ... services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.S

我正在尝试实现这一点:

我的代码:

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
    .AddDataAnnotationsLocalization(options =>
    {
        options.DataAnnotationLocalizerProvider = (type, factory) =>
            factory.Create(typeof(SharedResource));
    });
...
}
SharedResource.cs

namespace MyProj.Classes
{
    /// <summary>
    /// Dummy class to group shared resources
    /// </summary>
    public class SharedResource
    {

    }
}
FooPage.cshtml

...
<input asp-for="Email" class="form-control">
<div class="invalid-feedback" style="display:block;">
    <span asp-validation-for="Email"></span>
</div>
...
。。。
...
我有资源文件Resources\SharedResource.resx

电子邮件电子邮件
电子邮件无效电子邮件字段不是有效的电子邮件地址。
EmailRequired电子邮件字段是必填字段

不工作,编译或运行时没有错误。它显示的不是翻译,而是“EmailIsNotValid”或“EmailRequired”。有什么可能出错?

重复的,但没有标记的答案,并且隐藏在注释中

虚拟SharedResource类应与web应用程序(startup.cs)位于同一命名空间中。在我的例子中,我删除了“.class”。文件不清楚

更新: 对于与我相同的虚拟类,文件名规则适用于文档:

资源是以其类的完整类型名减去 程序集名称。例如,一个项目中的法语资源 程序集是该类的LocalizationWebsite.Web.dll LocalizationWebsite.Web.Startup将命名为Startup.fr.resx。A. 课堂资源 将命名为LocalizationWebsite.Web.Controllers.HomeController Controllers.HomeController.fr.resx。如果目标类的命名空间 与程序集名称不同,您将需要完整的类型名称。 例如,在示例项目中,类型的资源 工具将命名为extranspace.Tools.fr.resx


另一种解决方法是将资源文件命名为'Classes.SharedResource.resx'或将其放在Resources\Classes文件夹中。

您想要的是
ErrorMessageResourceName
ErrorMessageResourceType
属性,而不是
ErrorMessage
可能重复的内容,我假设自mvc 5以来情况发生了变化,在官方文档中,没有ErrorMessageResourceName/Type信息(在我的链接中)。它可能是@CamiloTerevinto的副本,这是.net核心。它以不同的方式处理本地化
...
<input asp-for="Email" class="form-control">
<div class="invalid-feedback" style="display:block;">
    <span asp-validation-for="Email"></span>
</div>
...