Подтвердить что ты не робот

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}."

Спасибо.

4b9b3361

Ответ 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..!")]