我客製化了一個ValidationAttribute,
但我想在回傳錯誤時,擁有Localization多國語言的信息
有嘗試了以下的方式,但是這樣是不可行的,再Model使用SearchItem的部分會出錯.
感謝.
【已解決】
public class TestAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var search = value as IDictionary<string, string>;
var _sharedResource = validationContext.GetService(typeof(IStringLocalizer<SharedResource>)) as IStringLocalizer<SharedResource>;
if(search == null)
{
return new ValidationResult(_sharedResource["string must exist"]);
}
return ValidationResult.Success;
}
}
Models
[TestItem]
public IDictionary<string, string> test { get; set; }
有嘗試了以下的方式,但是這樣是不可行的,再Model使用SearchItem的部分會出錯.
如果在Model中使用[TestItem]特性會出錯,那最有可能是因為在您的專案中缺少IStringLocalizer服務的設置。
請確保在Startup.cs類中的ConfigureServices方法中已經正確設置了IStringLocalizer服務。
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddControllersWithViews().AddViewLocalization().AddDataAnnotationsLocalization();
您還需要確保您的SharedResource.resx檔案存在於您的Resources資料夾中。