Это проблема, с которой мы сталкиваемся в .NET MVC 2.
Мы пытаемся использовать DataAnnotations, чтобы заботиться о проверке модели для нас, как и положено.Единственная проблема, с которой мы сталкиваемся, заключается в том, что нам не нужны стандартные сообщения об ошибках (поскольку на нашем веб-сайте несколько языков).
Мы хотим локализовать это, но способ настройки сайта:является то, что весь текст приходит из базы данных.Поэтому мы хотели бы, чтобы наши сообщения об ошибках также были в базе данных.
Поэтому мы написали собственный атрибут RequiredAttribute, например:
public class LocalizedRequiredAttribute : RequiredAttribute
{
public string LocalizedErrorMessage
{
get
{
return ErrorMessage;
}
set
{
ErrorMessage = value.Translate();
}
}
}
Мы написали расширение для класса Stringдобавьте метод Translate (), который выполняет необходимый поиск в базе данных для правильной локализованной версии.
Мы используем наш атрибут следующим образом:
[LocalizedRequired(LocalizedErrorMessage = "Naam is required")]
public string Name {get; set; }
Это работает, но только один раз.
Если вы сначала посетите сайт на французском языке, вы увидите французское сообщение об ошибке, в котором говорится, что вы должны ввести значение.Если вы посетите сайт на английском языке позже, вы все равно увидите ошибку на французском языке на странице на английском языке.Кажется, что Setter вызывается только один раз.
Что мы можем сделать, чтобы предотвратить это поведение и обновлять сообщение об ошибке каждый раз, когда выполняется проверка / модель заполняется значениями?
Спасибо залюбая помощь, которую вы можете оказать мне.