[英]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文件的自定義錯誤消息。 我將創建更多的模型,如果我不必為每個模型都指定ErrorMessageResourceName
和ErrorMessageResourceType
,那么我會希望它。
我想將所有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;
});
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.