MVC модельное состояние - PullRequest
       2

MVC модельное состояние

4 голосов
/ 22 марта 2010

Поздравления На всех моих контроллерах я перерабатываю один и тот же код, который оборачивает мои модели и обращается к сервисному слою - и я устал от копирования / вставки его в каждый контроллер:

private IProjectService _service;
public New()
{
_service = new ProjectService(new ModelValidation(this.ModelState));
}
public New(IProjectService service)
{
_service = service;
}

Есть ли место, где я могу разместить это, где все мои контроллеры имеют к нему доступ?

Ответы [ 4 ]

5 голосов
/ 22 марта 2010

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

public class BaseController : Controller
{
    protected IProjectService Service { get; private set; }
    public New()
    {
        Service = new ProjectService(new ModelValidation(this.ModelState));
    }
    public New(IProjectService service)
    {
        Service = service;
    }
}

Кроме того, вы можете прочитать внедрение зависимостей и посмотреть на использование контейнера IOC для внедрения этих зависимостей.

2 голосов
/ 22 марта 2010

Добро пожаловать в чудесный мир кодовых запахов .Вы нашли один, даже не зная, что это было.Всякий раз, когда вы думаете о себе."Там должен быть лучший путь."Есть.В этом случае базовый класс будет иметь большое значение для решения вашей проблемы.

1 голос
/ 22 марта 2010

Создайте базовый контроллер и извлеките из него ваши контроллеры.

 public class BaseController : Controller
 { 
      protected IProjectService _service;
      public New()
      {
           _service = new ProjectService(new ModelValidation(this.ModelState));
      }
      public New(IProjectService service)
      {
           _service = service;
      }
 }
 public class MyController : BaseController
 {
     public ActionResult Index()
     {
     }
 }
1 голос
/ 22 марта 2010

Контроллер базового класса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...