我有一个旧的C#MVC 2.0 Web应用程序。
每当我使用[Required]
属性时,默认的验证错误消息就会出现:
[whatever]字段为必填。
我的问题是该应用程序不是英语,所以我基本上必须在所有地方将属性调用更改为[Required(ErrorMessage = "Le champ [whatever] est requis.")]
。
是否有一种方法可以覆盖默认错误消息,因此仅在需要特定消息时才需要指定它?
我正在寻找类似的东西
DefaultRequiredMessage = "Le champ {0} est requis.";
答案 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)
请执行以下操作以覆盖默认的必需错误消息:
new_list(item_cat=f_key).save()
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";
}
}
}