代码之家  ›  专栏  ›  技术社区  ›  john84

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

  •  1
  • john84  · 技术社区  · 14 年前

    (例如“MyApp.Controllers”)而不是 弗德

    2 回复  |  直到 14 年前
        1
  •  2
  •   Mark Seemann    14 年前

    是的,你可以。最简单的方法是将类库的命名空间添加到 routers.MapRoute 请致电global.asax。这就是我们的一个配置的样子:

    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()
            );
    }
    

    另一种选择是实现自定义IControllerFactory,但这需要更多的工作,而且通常没有必要。

        2
  •  0
  •   Max Toro    14 年前

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