如何将我的所有控制器放在自己的类库中

时间:2010-06-02 13:33:46

标签: asp.net-mvc

我是否可以将MVC配置为直接查看类库(例如“MyApp.Controllers”)而不是 foder 控制器?

2 个答案:

答案 0 :(得分:2)

是的,你可以。最简单的方法是将类库的命名空间添加到global.asax中的routers.MapRoute调用中。这就是我们的配置之一:

public static void RegisterRoutes(RouteCollection routes, IEnumerable<string> controllerNamespaces)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" },  // Parameter defaults
        controllerNamespaces.ToArray()
        );
}

请注意,我们使用MapRoute的重载,它允许我们提供控制器命名空间的字符串数组。

另一个选择是实现一个自定义IControllerFactory,但这样做更多,通常不是必需的。

答案 1 :(得分:0)

ASP.NET MVC运行时对名为“控制器”的文件夹一无所知,这只是一个项目结构约定。您可以将控制器放在任何程序集的任何程序集上,并且它应该可以在没有任何特殊配置的情况下运行。