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,而不是通用的验证消息,比如在缺少必填字段的情况下。
我认为(可能是错误的)错误消息的语言取决于您的。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; }
无论你在运行时使用什么语言(基于你设置的资源文件),都将显示相应的版本