2009-11-02 76 views
8

我在这里有几个控制器,其中包含我可以在其他控制器中使用的方法。在ASP.NET MVC控制器之间共享代码

我考虑将一些常用功能移出到基本控制器,然后这些控制器可以从中继承。与此问题是,我有我需要在多个基地控制我不能访问的方法。 (因为我们不能从多个基本控制器继承)。

我的另一个想法是将常用功能移出到Controller文件夹以外的他们自己的类中。

你会怎么做?在ASP.NET MVC中有没有一种很好的方式来共享这样的代码,但我还不知道?

回答

14

有一个关于面向对象的编程经验法则,你应该在继承青睐成分,它非常适合这个场景。

我会做一个或多个封装有问题的方法的服务,然后从控制器中使用这些服务。

对于额外的点,从相关服务中提取一个接口,并将接口注入到控制器中以最大限度地分离关注点。

+0

我有一个稍微不同的场景。我有几个Web应用程序,其登录控制器具有_完全相同的code_。这些应用程序的登录系统之间的差异仅限于其web.config文件。我想在一个单独的项目中有一个共享的登录控制器类,它将被我的Web应用程序引用。那可能吗? – pyon 2011-06-21 16:51:44

+0

是的。我总是将所有控制器编码到单独的库中。 – 2011-06-21 18:50:03

+0

不错。那么观点呢? – pyon 2011-06-21 19:00:39

4

我会考虑帮助者类或其他东西。从你所描述什么功能帮助控制器/

1

选择似乎是基础控制器或助手类。您可以控制控制器的创建,并将帮助器注入任何控制器所需的控制器。

相关问题