ASP.NET Core MVC - DataAnnotations本地化显示密钥名称而不是关联值

时间:2018-03-12 14:32:31

标签: asp.net-mvc asp.net-core localization viewmodel data-annotations

我遇到了与在我的ViewModel中实现本地化相关的问题,我们正在使用ASP.NET Core 2.0,这是我尝试过的:

1)我要翻译DataAnnotations消息的viewmodel

public class ForgotPasswordViewModel
{
    [Required(ErrorMessage = "RequiredEmail")]
    //[Required(ErrorMessageResourceName = "RequiredEmail", ErrorMessageResourceType = typeof(ForgotPasswordViewModel))]
    [EmailAddress(ErrorMessage = "Veuillez entrer un email valide.")]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email")]
    public string Email { get; set; }
}

2)我添加到Startup.cs的代码

public void ConfigureServices(IServiceCollection services){
//...
       services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix).AddDataAnnotationsLocalization();
//...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
//...
        var supportedCultures = new[]
        {
            new CultureInfo("en-US"),
            new CultureInfo("fr-FR")
        };

        app.UseRequestLocalization(new RequestLocalizationOptions()
        {
            DefaultRequestCulture = new RequestCulture("fr-FR"),
            SupportedCultures = supportedCultures,
            SupportedUICultures = supportedCultures
        });
//...
}

我有两个资源文件位于Resources / ViewModels / Account /

  • ForgotPasswordViewModel.fr.resx
  • ForgorPasswordViewModel.en.resx

目前具有以下键/值:

  • RequiredEmail => L'adresse emailestnécessaire
  • RequiredEmail =>邮件地址是必要的

现在,它不起作用。显示的是“RequiredEmail”而不是那些消息。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

好吧,傻我。原始视图模型的路径是 / Models / ViewModels /...因此,资源文件的路径必须是 Resources / Models / ViewModels / Account /...而不是 Resources / ViewModels / Account /...

我只是盲目地关注微软的文档并没有多想它。

相关问题