Asp.Net MVC 2 - Изменение строки PropertyValueRequired
Используя файл resx в каталоге App_GlobalResources, я смог изменить сообщение по умолчанию для строки PropertyValueInvalid модельных валидаторов.
Но это не работает для перевода сообщения, когда требуется значение (PropertyValueRequired.)
В приложении Global_asax.cs Application_Start() я изменил ключ класса ресурса, например:
DefaultModelBinder.ResourceClassKey = "Messages";
И в файлах Messages.resx я поместил две записи:
- "PropertyValueInvalid" = > "O valor" {0} 'é inválido para o campo {1}. "
- "PropertyValueRequired" = > "É requiredário digitar o {0}."
Спасибо.
Ответы
Ответ 1
Обязательный атрибут не используется DefaultModelBinder.GetValueRequiredResource.
Создайте собственный класс DataAnnotationsModelValidator.
public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute)
: base(metadata, context, attribute)
{
attribute.ErrorMessageResourceType = typeof (Messages);
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
и зарегистрируйте адаптер в Global.asax.
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter));
Надеюсь на эту помощь!
Повторяемые строки сообщений об ошибках для сообщений об ошибках для DataAnnotations
Ответ 2
Это сообщение запечено в System.ComponentModel.DataAnnotations
сборке под ключом RequiredAttribute_ValidationError
. Вы можете написать собственный атрибут проверки:
public class MyRequiredAttribute : RequiredAttribute
{
public MyRequiredAttribute()
{
ErrorMessageResourceType = typeof(Messages);
ErrorMessageResourceName = "Required";
}
}
а затем внутри вашего файла Messages.resx
укажите строку Required
:
Required => É necessário digitar o {0}.
и, наконец, украсить ваше свойство модели просмотра с помощью этого настраиваемого атрибута:
public class MyViewModel
{
[MyRequired]
public int Foo { get; set; }
}
Ответ 3
Как насчет
[Required (ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Messages)]
public string Foo { get; set; }
Required => É necessário digitar o {0}.
или
Required => {0} field is required.
Пожалуйста, обратитесь к ссылке для полного руководства по локализации asp.net mvc
Руководство по локализации asp.net mvc
Ответ 4
Просто добавьте как это
[Required(ErrorMessage = "Your Error Message, here..!")]