Asp.net mvc 如何在ASP.NET MVC中组织控制器

Asp.net mvc 如何在ASP.NET MVC中组织控制器,asp.net-mvc,Asp.net Mvc,我有一个关于如何在ASP.NET MVC中组织控制器的问题。 例如,假设您有一个联系人数据库表和一个活动数据库表。 活动表中有ContactId的外键,因此必须将活动添加到现有联系人中 现在在ASP.NETMVC中。联系人控制器是否也应处理活动和操作? 或者我应该创建一个ActivityController并在其中添加、编辑和删除 过程可能会有所不同,但是否有最佳做法?这实际上取决于您如何构建屏幕 我不知道您是如何构建屏幕的,但我说我有一个编辑联系人页面,该页面的一部分显示了活动列表,然后允许您

我有一个关于如何在ASP.NET MVC中组织控制器的问题。 例如,假设您有一个联系人数据库表和一个活动数据库表。 活动表中有ContactId的外键,因此必须将活动添加到现有联系人中

现在在ASP.NETMVC中。联系人控制器是否也应处理活动和操作? 或者我应该创建一个ActivityController并在其中添加、编辑和删除


过程可能会有所不同,但是否有最佳做法?

这实际上取决于您如何构建屏幕

我不知道您是如何构建屏幕的,但我说我有一个编辑联系人页面,该页面的一部分显示了活动列表,然后允许您添加/编辑/删除活动。我将使用Ajax来处理这个问题,然后创建一个活动WebApi控制器(如果您使用的是MVC4)来处理Ajax调用

如果您使用的是MVC3,那么我会将这些方法添加到联系人控制器中

编辑:


为了支持@Husein,他比我更好地展示了他的案例——这肯定是关于你想如何处理对象图。我上面的描述假设您不是孤立地处理活动-它们仅作为联系人对象的一部分处理。

这实际上取决于活动和联系人是否可以彼此分离,或者是否必须作为一个整体处理。您通常希望遵循单一责任原则。基本上,您的控制器应该有一个职责,每个操作应该执行一个特定的操作。例如,您可能有
联系人控制器
。控制器有一个职责,即操纵一种类型的对象,在本例中为触点。作为此操作的一部分,您将通过让每个操作执行特定的CRUD操作来调整此操作

另一方面,每个
联系人都有
活动
。你计划对活动做什么以及如何对待它们完全取决于你自己。是否有必要列出每个联系人的每个注册活动?如果是,则将其作为具有自己CRUD操作的ActivitiesController来实现。此控制器中的某些操作将接收联系人ID,以帮助将活动分配给联系人等

如果上一个问题的答案是否定的,并且你不需要将活动作为一个单独的过程来对待,那么你可以将它以某种方式整合到联系人中,但是说实话,我仍然会继续将两者分开。如果需求发生了变化,并且您意识到活动必须是一个单独的过程,那么请考虑一下未来。如果你将两个模型紧密地集成在一起,你将很难将它们分开(好吧,可能没那么难,但这会让人头疼)。如果您现在将它们分开,那么从长远来看,将更容易维护它们。除此之外,将两者分离将有助于创建更轻量级的控制器