每个类别的控制器或所有的一个控制器

时间:2013-03-08 23:43:26

标签: asp.net-mvc asp.net-mvc-3

在我的数据库中,我有一个表格:

Products{ProductId, CategoryId, Name} // parent table
Procesors{ProductId...} // 1 to 1
HardDisks{ProductId...} // 1 to 1
MotherBoards{ProductId...} // 1 to 1
Categories{CategoryId, Name, ParentId}

产品可以是procesor, hard disk, mother board etc.
选项1: 创建控制器

ProcesorControllers
HardDiskController
MotherBoardController

等。
选项2:

CategoryController
ProductController

其中ProductController有方法

public ActionResult Index(int categoryId, string category)
{... // return View(products);

在应用程序场景中,我需要CRUD,过滤产品

2 个答案:

答案 0 :(得分:1)

CRUD和过滤器是与任何类别的产品无关的通用操作。您的应用程序可能会扩展,以便在一段时间后添加更新的产品。

考虑到这一点,我会说选项1 不会扩展。想象一下,每次添加新产品时都会更改代码。

选项2 是我倾向于倾向的。它还可以帮助您编写非重复的代码,更少的代码。

答案 1 :(得分:1)

简单地将控制器放在一起应该作为给定上下文的容器,因此在ProductController中对产品进行分组似乎是合乎逻辑的。

然而,这是个人偏好。您需要考虑的事项是大规模控制器的可维护性,以及访问这些端点时要生成的URL。