簡體   English   中英

asp.net核心默認ErrorMessageResourceName和Type

[英]asp.net core default ErrorMessageResourceName and Type

我有這個課:

public class CategoryViewModel
{
    [Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(100, ErrorMessageResourceName = "IdStringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Id { get; set; }
    [Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(255, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Name { get; set; }
    [StringLength(255, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Image { get; set; }
    public bool Active { get; set; }
}

如您所見,它具有來自我的Resources.resx文件的自定義錯誤消息。 我將創建更多的模型,如果我不必為每個模型都指定ErrorMessageResourceNameErrorMessageResourceType ,那么我會希望它。

我想將所有Required屬性設置為使用RequiredErrorMessage,並將StringLength屬性設置為使用StringLengthErrorMessage

這可能嗎?

如ASP.NET Core文檔中所述,可以在啟動文件中配置數據注釋本地化 ,然后可以在屬性標記內提供錯誤消息。

1.配置數據批注本地化以使用共享資源文件,名為SharedResources的虛擬類用於共享資源:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                .AddViewLocalization(o => o.ResourcesPath = "Resources")
                .AddDataAnnotationsLocalization(o =>
                 {
                     var type = typeof(SharedResources);
                     var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
                     var factory = services.BuildServiceProvider().GetService<IStringLocalizerFactory>();
                     var localizer = factory.Create("SharedResources", assemblyName.Name);
                     o.DataAnnotationLocalizerProvider = (t, f) => localizer;

                 });
  1. 您可以添加如下所示的資源文件:

在此處輸入圖片說明

在此處輸入圖片說明

3.通過用相關屬性裝飾其所有屬性來修改模型

public class EmuItem
{
    public int Id { get; set; }
    public string SearchName { get; set; }

    [Required(ErrorMessage = "Please enter value for {0}")]
    public string Name { get; set; }

    public int Age { get; set; }
}

結果的屏幕截圖: 在此處輸入圖片說明

參考: http : //www.ziyad.info/zh/articles/16-Localizing_DataAnnotations

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM