2

我使用DataAnnotation驗證ASP.NET Core中的模型。但是,當我有一個必填字段,我的英語得到了錯誤消息,當它缺少就像這個例子:以英文以外的特定語言獲取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核心身份,而不是爲一般驗證消息就像在這種情況下缺少必填字段一樣。

回答

0

我相信(可能是錯誤)錯誤消息的語言取決於您的.net安裝。如果你獲得英文版,你需要刪除.net版本並安裝德文版。

您可以設置默認郎在網絡配置,如(如果這並沒有改變該消息的郎鹹平,那麼你需要在你的屬性RESX文件或硬編碼它們:

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

如果那麼你可以在每個請求的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; } 

那麼無論用什麼語言在運行時的呈現(根據你所擁有的資源文件設置)適當的版本將被顯示。

+1

這將允許您自定義它們,但它不會更改* default *驗證消息的語言。 – DavidG

+0

當然,我明白了,並增加了一些信息。 – Darren

相關問題