Я пишу приложение, которое загружает языковые тексты из базы данных, чтобы включить интернационализацию, используя ключи в моделях просмотра, чтобы найти правильный текст. Я изменил версию MyLocalizationprovider с http://www.codeproject.com/Tips/514321/A-Simple-and-Effective-Way-to-Localize-ASP-Net-MVC, мой измененный код можно найти здесь : https://gist.github.com/TheConfuser/5f4a64ebe13254e7d45b. Код проходит через атрибуты метаданных и заменяет заголовок (DisplayName), заполнитель (Prompt), сообщение об ошибке (ErrorMessage) и сообщение об ошибке проверки (ErrorMessage). Я получаю DisplayAttribute для ErrorMessage, Prompt и Name, а также ValidationAttribute для ErrorMessage для проверки между двумя полями, в данном случае паролями. Вот такие ключи получаю:
if (typeName.Equals("DisplayAttribute"))
{
nameKey = ((DisplayAttribute) attr).Name;
placeholderKey = ((DisplayAttribute) attr).Prompt;
...
Затем я заменяю ключи значениями из своей базы данных. Мои модели просмотра выглядят следующим образом:
[Required(ErrorMessage = "changepassword_newpassword_error")]
[DataType(DataType.Password)]
[Display(Prompt = "changepassword_newpassword_placeholder", Name = "changepassword_newpassword_headline")]
[RegularExpression(@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,12}", ErrorMessage = "changepassword_newpassword_regexerror")]
public string NewPassword { get; set; }
Это отлично работает для заполнителей, заголовков, сообщений об ошибках для поля и для проверки, однако я еще не знаю, как найти RegularExpression. Я думал, что он будет существовать в ValidationAttribute, как и его ErrorMessage, но я ничего не нашел там. См. http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute(v=vs.110).aspx.
Где я могу найти поле для строки регулярного выражения, оно вообще существует? Или я должен попытаться написать свой собственный атрибут (например, Установить RegularExpression динамически в модели), если да, может ли кто-нибудь помочь мне в пути?