Give RequiredAttribute пользовательское сообщение
У меня есть обязательное сообщение, и я хочу дать ему пользовательское сообщение, потому что по умолчанию оно не очень хорошее. Сообщение должно быть получено из файла ресурсов и параметризовано, поэтому сообщение в файле ресурсов будет выглядеть примерно так:
"The {0} field is required."
Мне нужно заменить {0} на то, что я поставляю. Я знаю, что сообщение по умолчанию похоже, но проблема в том, что я получаю такие вещи, как
"The RequiredReason field is required."
когда я хочу
"The required reason field is required".
Есть идеи, как это можно сделать?
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);
}
}