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

时间:2018-10-29 09:12:10

标签: c# asp.net-mvc asp.net-mvc-2 data-annotations

我有一个旧的C#MVC 2.0 Web应用程序。

每当我使用[Required]属性时,默认的验证错误消息就会出现:

  

[whatever]字段为必填。

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

是否有一种方法可以覆盖默认错误消息,因此仅在需要特定消息时才需要指定它?

我正在寻找类似的东西

DefaultRequiredMessage = "Le champ {0} est requis.";

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

  • 创建继承自RequiredAttributeAdapter的自定义适配器,如下所示:

    new_list(item_cat=f_key).save()
  • 如下所示在Global.asax Application_Start()中注册适配器:

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

}

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