How to override default required error message

别来无恙 提交于 2019-12-29 02:04:12

问题


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.";

回答1:


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].




回答2:


Please perform the below operation to override default required error message:

  • Create a custom adapter inheriting the RequiredAttributeAdapter as below :

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";
        }
    }

}
  • Register the Adapter in Global.asax Application_Start() as below:

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(YourRequiredAttributeAdapter));

  • Resource File Configuration:


来源:https://stackoverflow.com/questions/53042131/how-to-override-default-required-error-message

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!