为RequiredAttribute提供自定义消息
本文关键字:自定义消息 RequiredAttribute | 更新日期: 2023-09-27 18:23:48
我有一个必需的消息,我想给它一个自定义消息,因为默认消息不太好。消息必须来自一个资源文件并被参数化,因此资源文件中的消息将类似于
"The {0} field is required."
我需要能够用我提供的东西替换{0}。我知道默认消息是类似的,但问题是我最终得到了像这样的东西
"The RequiredReason field is required."
我想要的是
"The required reason field is required".
知道怎么做吗?
您可以创建自己的RequiredAttribute,然后重写FormatErrorMessage方法以使用参数名称,甚至可以通过构造函数将要格式化的参数传递给类。
类似于:
public class ParameterisedRequiredAttribute : RequiredAttribute
{
private string[] _replacements { get; set; }
public ParameterisedRequiredAttribute(params string[] replacements)
{
_replacements = replacements;
ErrorMessageResourceName = ErrorMessagesErrors.SpecificFieldRequired;
ErrorMessageResourceType = typeof(ErrorMessages);
}
public override string FormatErrorMessage(string name)
{
return string.Format(ErrorMessageString, (object[])_replacements);
}
}