代码之家  ›  专栏  ›  技术社区  ›  Rafalon

如何覆盖默认的必需错误消息

  •  0
  • Rafalon  · 技术社区  · 6 年前

    [Required]

    需要[whatever]字段。

    我的问题是应用程序不是英文的,所以我基本上必须将属性调用更改为 [Required(ErrorMessage = "Le champ [whatever] est requis.")]

    我在找这样的东西:

    DefaultRequiredMessage = "Le champ {0} est requis.";
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   Salah Akbari    6 年前

    您可以创建一个类并从中继承它 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]

        2
  •  1
  •   Grigory Frolov VCody    5 年前

    请执行以下操作以覆盖默认的必需错误消息:

    • 创建一个继承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\u Start()中注册适配器,如下所示:

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

    • 资源文件配置: enter image description here