2个控制器会有一些非常类似的动作,我可以以某种方式共享代码吗?

时间:2014-04-03 11:41:18

标签: c# asp.net-mvc

在MVC应用程序中,我有2个处理特定类型数据的控制器。一个控制器用于管理员,另一个用于普通用户。对于两个控制器,一些操作将完全相同,而一些操作对于特定控制器是唯一的。我可以以某种方式避免拥有相同代码的多个副本吗?

请注意,每个控制器都从不同的基类继承而且我不能直接从一个控制器中的操作重定向(url必须保留在一个控制器中)到另一个控制器中的操作。

4 个答案:

答案 0 :(得分:2)

为什么您需要单独的控制器来执行相同操作?

我认为您需要关注 DRY 。 之前请阅读:

Don't Repeat Yourself

根据您的情况,您可以在单独的类中使用方法或使用扩展方法。 您还可以使用单独的控制器进行操作。 您也可以考虑控制器和操作。

答案 1 :(得分:2)

创建一个单独的类来保存2个控制器中重复的逻辑。 然后从两个控制器调用逻辑......

这个辅助类......对于清理控制器的逻辑非常有用......

答案 2 :(得分:1)

您可以使用Filters,也可以在其他地方共享逻辑,最简单的方法是在ActionMethods调用的其中一个控制器(或其他地方)中使用公共静态方法。

如果您在两个控制器中进行某种类型的服务调用,也许您可​​以将共享逻辑移动到由两种服务方法调用的私有方法?

我同意Shahrooz的观点。尽管在最初编写代码时,在多个位置具有相同的代码是非常有效的,但从长远来看咬你。

答案 3 :(得分:0)

不要重复自己

我建议您使用Attribute。创建一个属性,用于定义哪个用户可以按角色输入操作。希望this会帮助你: