Переопределение атрибута проверки из базовой модели - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть контроллер MVC под названием MyController с действием MyAction. С другой стороны, у меня есть Модель с именем MyModel, и все эти классы находятся в проекте под названием Portal.Website (Приложение Asp.net MVC3), который я использую в качестве универсального веб-сайта и который хранит общие функциональные возможности для пользовательских веб-сайтов, которые я добавлю в будущее.

С другой стороны, у меня есть другой проект веб-сайта со ссылкой на проект Portal.Website под названием Portal.Website.MyCustomWebsite.

Это viewmodel MyModel.cs в общей части сайта:

namespace Portal.Website
{
    public class MyModel
    {
        [Required(ErrorMessage="The field Name is required.")]
        [Display("MyPropertyOriginal")]
        public virtual string Name{get;set;}
    }
}

Это контроллер и действие в общей части сайта:

namespace Portal.Website
{
    public class MyController: Controller
    {
       [HttpPost]
       public ActionResult MyAction(MyModel model)
       {
          if(Model.IsValid)
          ....
          //My issue: Im getting the error message in english, not the overridden one.

       }
    }
}

Это модель представления, которую я создал в пользовательской части:

namespace Portal.Website.MyCustomWebsite
{
    public class MyModel: MyModel
    {
        [Required(ErrorMessage="My error message in other language.")]
        [Display("MyPropertyOverriden")]
        public override string Name{get;set;}
    }
}

Моя проблема:

Я хотел бы переопределить ErrorMessage атрибута Required. По этой причине я создал новую модель в моем собственном проекте. С другой стороны, я хотел бы использовать Controller / Action (MyController / MyAction), который уже определен в моей общей части.

Вы знаете, возможно ли это? Я только получаю проблему с атрибутом Required, но с Display One он отлично работает.

Заранее спасибо. Поздравил. Хосе.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Вы можете проверить эту статью, которая предлагает два возможных решения:

http://www.codeproject.com/Articles/130586/Simplified-localization-for-DataAnnotations

Я обнаружил, что имеет смысл воссоздать некоторые классы DataAnnotation с моей собственной логикой.

1 голос
/ 14 февраля 2012

MVC3 поставляется с лучшей поддержкой I18N (интернационализация), чем его предшественники - вы можете передать RequiredAttribute тип вашего класса ресурса и ключ ресурса, и сообщение об ошибке будет отображаться на том языке, который наиболее подходит:

[Required(ErrorMessageResourceType = typeof(MyResources), ErrorMessageResourceName = "ResourceKey")]
public override string Name { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...