2010-09-15 27 views
2

对于某些人来说,这一定是一个微不足道的问题,但我还没有找到任何关于此的实际信息。如何告诉ASP.NET MVC在库中查找控制器?

我有一个ASP.NET MVC的Web应用程序。因为我喜欢编写可重用的代码,所以我想将我的控制器放入独立的库程序集中,并在多个Web应用程序中重用它们。

问题是,我如何告诉ASP.NET MVC它应该在另一个程序集中而不是Web应用程序本身中寻找控制器?

回答

3

您需要创建自己的ControllerFactory。

退房this链接

基本上,创建的ControllerFactory如上所述,然后在Global.asax中添加此行:

ControllerBuilder.Current.SetControllerFactory(new YourFactory()); 

告诉ASP.NET MVC使用您的ControllerFactory。

起脚是,当你定义你的路由,你需要给ASP.NET MVC一个“暗示”在何处这一集位于:

yourRoute.DataTokens = new RouteValueDictionary(
    new 
    { 
     namespaces = new[] { "SomeAssembly.Controllers" } 
    }); 

如果它不发现它,然后它会在常规名称空间(Web应用程序)。

Here是另一个显示如何创建自定义控制器工厂的链接。

祝你好运!

+0

谢谢,这正是我所寻找的。实际上,只需指定我的控制器所在的命名空间就足够了! – Venemo 2010-09-16 00:06:21

+0

很酷。我从来没有尝试过整个命名空间的事情,但我目前使用控制器工厂进行依赖注入。很高兴它的工作。 – RPM1984 2010-09-16 00:12:07