如何覆盖默认的必需错误消息
How to override default required error message
我有一个旧的 C# MVC 2.0 Web 应用程序。
每当我使用 [Required]
属性时,默认验证错误消息为:
The [whatever] field is required.
我的问题是应用程序不是英文的,所以我基本上必须在所有地方将属性调用更改为 [Required(ErrorMessage = "Le champ [whatever] est requis.")]
。
有没有一种方法可以覆盖默认错误消息,以便我只需要在需要特定消息时指定它?
我正在寻找类似的东西:
DefaultRequiredMessage = "Le champ {0} est requis.";
您可以创建一个 class 并从 RequiredAttribute
继承它。像这样:
public class CustomRequired: RequiredAttribute
{
public CustomRequired()
{
this.ErrorMessage = "Le champ est requis.";
}
}
或:
public class CustomRequired: RequiredAttribute
{
public override string FormatErrorMessage(string whatever)
{
return !String.IsNullOrEmpty(ErrorMessage)
? ErrorMessage
: $"Le champ {whatever} est requis.";
}
}
您应该将 CustomRequired
与您的属性一起使用,而不是 [Required]
。
请执行以下操作以覆盖默认的必需错误消息:
- 创建一个继承 RequiredAttributeAdapter 的自定义适配器,如下所示:
public class YourRequiredAttributeAdapter : DataAnnotationsModelValidator<RequiredAttribute>
{
public YourRequiredAttributeAdapter(ModelMetadata metadata, ControllerContext context, RequiredAttribute attribute)
: base(metadata, context, attribute)
{
if (string.IsNullOrWhiteSpace(attribute.ErrorMessage)
)
{
attribute.ErrorMessageResourceType ="Your resource file";
attribute.ErrorMessageResourceName = "Keep the key name in resource file as "PropertyValueRequired";
}
}
}
- 在 Global.asax Application_Start() 中注册适配器,如下所示:
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(YourRequiredAttributeAdapter));
- 资源文件配置:
我有一个旧的 C# MVC 2.0 Web 应用程序。
每当我使用 [Required]
属性时,默认验证错误消息为:
The [whatever] field is required.
我的问题是应用程序不是英文的,所以我基本上必须在所有地方将属性调用更改为 [Required(ErrorMessage = "Le champ [whatever] est requis.")]
。
有没有一种方法可以覆盖默认错误消息,以便我只需要在需要特定消息时指定它?
我正在寻找类似的东西:
DefaultRequiredMessage = "Le champ {0} est requis.";
您可以创建一个 class 并从 RequiredAttribute
继承它。像这样:
public class CustomRequired: RequiredAttribute
{
public CustomRequired()
{
this.ErrorMessage = "Le champ est requis.";
}
}
或:
public class CustomRequired: RequiredAttribute
{
public override string FormatErrorMessage(string whatever)
{
return !String.IsNullOrEmpty(ErrorMessage)
? ErrorMessage
: $"Le champ {whatever} est requis.";
}
}
您应该将 CustomRequired
与您的属性一起使用,而不是 [Required]
。
请执行以下操作以覆盖默认的必需错误消息:
- 创建一个继承 RequiredAttributeAdapter 的自定义适配器,如下所示:
public class YourRequiredAttributeAdapter : DataAnnotationsModelValidator<RequiredAttribute>
{
public YourRequiredAttributeAdapter(ModelMetadata metadata, ControllerContext context, RequiredAttribute attribute)
: base(metadata, context, attribute)
{
if (string.IsNullOrWhiteSpace(attribute.ErrorMessage)
)
{
attribute.ErrorMessageResourceType ="Your resource file";
attribute.ErrorMessageResourceName = "Keep the key name in resource file as "PropertyValueRequired";
}
}
}
- 在 Global.asax Application_Start() 中注册适配器,如下所示:
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(YourRequiredAttributeAdapter));
- 资源文件配置: