Поддержка таблиц - создать контроллер для каждого? - PullRequest
0 голосов
/ 12 октября 2010

мое приложение имеет много таблиц поддержки, для поддержки которых требуется интерфейс пользовательского интерфейса администратора - например, для стран, штатов, городов и т. Д. Я не уверен, имеет ли смысл добавлять действия CRUD для каждого из них в одном AdminController или создайте контроллер для каждой отдельной таблицы поддержки.

1 Ответ

0 голосов
/ 12 октября 2010

Если ваш код сильно повторяется и у вас есть правильные абстракции уровня данных (например, шаблон репозитория, внедрение зависимостей), вы можете создать универсальный контроллер администратора и подтипить его.

public abstract class AdminController<T> : Controller
{
   protected IRepository<T> _Repository;

   protected AdminController(IRepository<T> repo)
   {
       _Repository = repo;
   }

   public ViewResult List()
   {
       var all = _Repository.GetAll();  // todo paging, sorting, etc -- I'd use a service layer to do this
       return View(all);
   }

   public ViewResult Edit(int id)
   {
      var item = _Repository.GetById(id);
      return View(item);
   }
   // and so on...
}

Тогда фактические контроллеры:

public class PostController : AdminController<Post>
{
   public PostController(IRepository<Post> repo) : base(repo) {}
}

Конечно, вам все равно нужно сделать все представления.

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