I have an old C# MVC 2.0 web application.
Whenever I use a [Required]
attribute, the default validation error message goes:
The [whatever] field is required.
My problem is that the application isn't in English, so I basically have to change the attribute call to [Required(ErrorMessage = "Le champ [whatever] est requis.")]
everywhere.
Is there a way to override the default error message so I only have to specify it when I want a specific message?
I'm looking for something like:
DefaultRequiredMessage = "Le champ {0} est requis.";
You can create a class and inherit it from RequiredAttribute
. Something like this:
public class CustomRequired: RequiredAttribute
{
public CustomRequired()
{
this.ErrorMessage = "Le champ est requis.";
}
}
Or:
public class CustomRequired: RequiredAttribute
{
public override string FormatErrorMessage(string whatever)
{
return !String.IsNullOrEmpty(ErrorMessage)
? ErrorMessage
: $"Le champ {whatever} est requis.";
}
}
You should use CustomRequired
with your properties, rather than [Required]
.
Please perform the below operation to override default required error message:
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";
}
}
}
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(YourRequiredAttributeAdapter));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With