Edit: я опубликовал это, потому что я искал это решение с атрибутом [Required] и не мог найти его. Создание нового Q / A выглядит не очень хорошо, так как этот вопрос уже существует.
Я пытался решить ту же самую проблему и нашел очень простое решение в MVC 4.
Во-первых, вам, вероятно, придется хранить сообщения об ошибках в каком-то месте. Я использовал пользовательские ресурсы, хорошо описанные в http://afana.me/post/aspnet-mvc-internationalization.aspx.
Важно то, что я могу получить любой ресурс (даже сообщение об ошибке), просто вызвав ResourcesProject.Resources.SomeCustomError или ResourcesProject.Resources.MainPageTitle и т. Д. Каждый раз, когда я пытаюсь получить доступ Класс ресурсов, он берет информацию о культуре из текущего потока и возвращает правильный язык.
У меня есть сообщение об ошибке для проверки поля в ResourcesProject.Resources.RequiredAttribute . Чтобы это сообщение отображалось в представлении, просто обновите атрибут [Обязательный] этими двумя параметрами.
ErrorMessageResourceType - Тип, который будет вызываться (в нашем примере ResourcesProject.Resources)
ErrorMessageResourceName - Свойство, которое будет вызываться для указанного выше типа (в нашем случае RequiredAttribute)
Вот очень упрощенная модель входа в систему, которая показывает только сообщение проверки имени пользователя. Когда поле пустое, оно возьмет строку из ResourcesProject.Resources.RequiredAttribute и отобразит ее как ошибку.
public class LoginModel
{
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName="RequiredAttribute")]
[Display(Name = "User name")]
public string UserName { get; set; }
}