2013-12-20 3 views
6

Использование MVC 5 Мне нужно локализовать ErrorMessage для атрибутов DataAnnotation. я следующее сообщение об ошибкеКак локализовать ErrorMessage в DataAnnotation?

ОШИБКА

Аргумент атрибут должен быть константным выражением, TypeOf выражение создания выражения или массив типа параметра атрибута

В модели

[Compare("Password", ErrorMessage = Resources.Account_Register_ConfirmPasswordErrorMessage)] 
public string ConfirmPassword { get; set; } 

Любая идея, как это исправить?

ответ

7

Необходимо использовать ErrorMessageResourceName и ErrorMessageResourceType.

Например, как это:

[Compare("Password", ErrorMessageResourceName = "ConfirmPasswordErrorMessage", ErrorMessageResourceType=typeof(<<type_of_your_resoruce_class>>)] 
public string ConfirmPassword { get; set; } 

Здесь также ссылку на MSDN, где вы можете найти объяснение для обоих свойств.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.compareattribute(v=vs.110).aspx

Надеется, что это помогает!

С уважением, Урос

+1

Это может сработать, но в соответствии с документацией ASP.NET CORE здесь: https://docs.asp.net/en/latest/fundamentals/localization.html#dataannotations-localization, мы должны иметь возможность локализовать данные DataAnnotation сообщения об ошибках без указания имени и типа ресурса. Однако, что бы я ни старался, я не могу заставить эту работу работать. Может ли кто-то поделиться с этим опытом? – Vladislav

0

Вам ничего не нужно, просто создать файл ресурсов в нужном месте.

Например Ресурсы> ViewModels> LoginVm.en-US.resx

в LoginVm: [Требуется (ErrorMessage = "სახელი არის აუცილებელი")] < (это грузинский язык)

и LoginVm .en-US.resx просто добавить

სახელი არის აუცილებელი> UserName ТРЕБУЕТСЯ

и все сделано.

Смежные вопросы