ASP.. NET Core模型在除英语以外的特定语言中的错误

本文关键字:语言 错误 Core NET 模型 英语 ASP | 更新日期: 2023-09-27 18:17:33

我使用DataAnnotation来验证ASP中的模型。净的核心。但是,当我有一个必填字段时,当它缺失时,我得到了英语错误消息,就像下面的例子:

class MyModel {
    [Required]
    [Display(Name = "Seitentitel")]
    public string Title {get;set;}
}

这给了我一个英文验证错误消息 Seitentitel字段是必需的。但我想用一种特定的语言来传达信息,在这个例子中是德语。我想避免为我的模型的每个必需属性设置ErrorMessage。默认的错误消息在大多数情况下是正确的,但是使用错误的语言。

我如何为这些验证消息设置语言?

我试了这个没有成功:

var supportedCultures = new[] { new CultureInfo("de-DE") };
            app.UseRequestLocalization(new RequestLocalizationOptions {
                DefaultRequestCulture = new RequestCulture("de-DE"),
                SupportedCultures = supportedCultures,
                SupportedUICultures = supportedCultures
            });

如果ASP。. NET Core不提供这些翻译,我需要这样的东西:https://stackoverflow.com/a/38199890/5426333但不是为ASP。. NET Core Identity,而不是通用的验证消息,比如在缺少必填字段的情况下。

ASP.. NET Core模型在除英语以外的特定语言中的错误

我认为(可能是错误的)错误消息的语言取决于您的。net安装。如果你要的是英文版本,你需要删除你的。net版本并安装一个德语版本。

你可以在web配置中设置你的默认语言,例如(如果这不会改变消息的语言,那么你将需要resx文件或硬编码它们在你的属性:

<system.web>
   <globalization uiCulture="de-DE" />
</system.web>

如果不在网上。那么你就可以改变全局的文化。每个请求都有一个ax文件。

在任何其他情况下,您应该使用资源文件。*。

你可能需要读一点关于这些;不确定你的经验。如果是这样,一个好的起点是演练:使用资源进行ASP本地化。本质上它们是键/值对。每种语言都有一个文件。

然后在你的属性中这样写:

 [Required(ErrorMessageResourceName = "MyResourceKey", ErrorMessageResourceType = typeof(Your.Namespace.To.your.Resource.File))]
 public string SomeString{ get; set; }

无论你在运行时使用什么语言(基于你设置的资源文件),都将显示相应的版本