在ASP.NET Core 2.0中,我使用的是自定义IStringLocalizer
服务,配置后,除默认的必填字段消息外,翻译了我的大多数网站,即使我设置了ModelBindingMessageProvider
和{{1} }
模型
DataAnnotationLocalizerProvider
Startup.css(ConfigureServices方法)
public class EmailModel
{
[Required]
[EmailAddress()]
public string Email { get; set; }
[Required]
[Display(Name = "Name")]
public string Name { get; set; }
[Required]
[Phone]
[Display(Name = "Phone")]
public string Phone { get; set; }
[Required]
[Display(Name = "Subject")]
public string Subject { get; set; }
[Required]
[Display(Name="Message")]
public string Text { get; set; }
}
在我的xml本地化文件中(我的服务未使用资源文件),我有以下字符串:
“ {0}字段不是有效的电话号码。” -工作正常
“ {0}字段为必填字段”-无法正常工作,因为服务从未收到过任何如下所示的必需消息。
所以我知道我想念的是什么吗?
我知道很少有诸如 1)设置ErrorMessage 2)创建继承了RequiredArtibbute类的新类,并在类构造函数中设置默认消息
但是我的目标是更改RequierdAtrribute的DEFAULT消息
答案 0 :(得分:1)
对于DataAnnotation错误消息的本地化/自定义,必须在属性属性中提供它,否则将触发默认消息。
如果您已在策略中完成.AddDataAnnotationLocalization(...)
,请按以下方式使用它:
[Required(ErrorMessage ="The field '{0}' is required")]
[Display(Name = "Name")]
public string Name { get; set; }
或者,如果您不想使用启动设置并从特定的共享资源中指定错误消息(假设您具有名为“ MyResources”的资源文件):
[Required(
ErrorMessageResourceName = nameof(MyResources.Required),
ErrorMessageResourceType = typeof(MyResources))]
[Display(
Name = nameof(MyResources.Name),
ResourceType = typeof(MyResources))]
public string Name { get; set; }