我是否可以将MVC配置为直接查看类库(例如“MyApp.Controllers”)而不是 foder 控制器?
答案 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运行时对名为“控制器”的文件夹一无所知,这只是一个项目结构约定。您可以将控制器放在任何程序集的任何程序集上,并且它应该可以在没有任何特殊配置的情况下运行。