C# 为RequiredAttribute提供自定义消息

C# 为RequiredAttribute提供自定义消息,c#,.net,custom-attributes,resource-files,C#,.net,Custom Attributes,Resource Files,我有一个必需的消息,我想给它一个自定义消息,因为默认消息不是很好。消息必须来自资源文件,并且已参数化,因此资源文件中的消息类似于 "The {0} field is required." 我需要能够用我提供的东西替换{0}。我知道默认消息与此类似,但问题是我最终会遇到类似的情况 "The RequiredReason field is required." 当我想要的是 "The required reason field is required". 你知道怎么做吗?你可以创建自己的Req

我有一个必需的消息,我想给它一个自定义消息,因为默认消息不是很好。消息必须来自资源文件,并且已参数化,因此资源文件中的消息类似于

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