我使用DataAnnotation验证ASP.NET Core中的模型。但是当我有一个必填字段时,我得到的错误信息是英文错误,如下例所示:
class MyModel {
[Required]
[Display(Name = "Seitentitel")]
public string Title {get;set;}
}
这给了我一个denglish验证错误消息需要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核心标识,而不是像这种情况下的通用验证消息-field缺少。
答案 0 :(得分:1)
我相信(可能是错误的)错误消息的语言取决于您的.net安装。如果您正在使用英语版本,则需要删除.net版本并安装德语版本。
您可以在Web配置中设置默认语言,例如(如果这不会更改消息的语言,那么您将需要resx文件或对其属性进行硬编码:
<system.web>
<globalization uiCulture="de-DE" />
</system.web>
如果不在web.config中,那么您将在global.asax文件中为每个请求更改uiculture。
在任何其他情况下,您应该使用资源文件。 * .resx用于存储您要显示的文本。
您可能需要阅读一些有关这些内容;不确定你与他们的经历。如果是这样,一个好的起点是Walkthrough: Using Resources for Localization with ASP.NET基本上它们是键/值对。每种语言都有一个文件。
然后在你的属性中你会做这样的事情:
[Required(ErrorMessageResourceName = "MyResourceKey", ErrorMessageResourceType = typeof(Your.Namespace.To.your.Resource.File))]
public string SomeString{ get; set; }
然后,无论您在运行时呈现什么语言(根据您设置的资源文件),都会显示相应的版本。