支持表 - 为每个创建一个控制器?

时间:2010-10-11 20:42:33

标签: asp.net-mvc-2

我的应用程序有很多支持表,需要管理UI界面才能维护 - 例如:国家,州,城市等。我不确定在一个AdminController中为每个人添加CRUD操作是否有意义或为每个支持表创建一个Controller。

1 个答案:

答案 0 :(得分:0)

如果您的代码具有高度重复性并且您已经获得了适当的数据层抽象(例如,存储库模式,依赖注入),那么您可以创建一个通用的管理控制器并对其进行子类型化。

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) {}
}

当然,您仍需要制作所有观点。