2

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

"The {0} field is required."

我需要能够用我提供的东西替换 {0}。我知道默认消息是相似的,但问题是我最终得到了类似的东西

"The RequiredReason field is required."

当我想要的是

"The required reason field is required".

知道如何做到这一点吗?

4

1 回答 1

1

你可以创建自己的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);
        }
    }
于 2013-07-18T12:41:06.327 回答