Если ваш код сильно повторяется и у вас есть правильные абстракции уровня данных (например, шаблон репозитория, внедрение зависимостей), вы можете создать универсальный контроллер администратора и подтипить его.
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) {}
}
Конечно, вам все равно нужно сделать все представления.