2009-07-30 147 views
1
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "My", action = "MyFolder", id = "" } // Parameter defaults 
); 

上述代码将有助于调用MyFolder动作中的视图,该动作位于同一项目的MyController中。ASP.NET MVC体系结构

如果MyController以不同的项目形式存在于我的活动项目中,那该怎么办?如何调用相应的视图?

+0

你试过了吗?我的理解是,MVC将在所有引用中搜索MyController。 – 2009-07-30 12:49:22

+0

选中此项: - [SO-asp.net mvc把控制器放到一个单独的项目中](http://stackoverflow.com/questions/401376/asp-net-mvc-put-controllers-into-a-separate-project) 请不要考虑以下几点:: 可维护性 可扩展性 增量开发(比方说,我们有一个单独的DLL某些功能产品总数这是在我的项目非常有用的(例如将实现虚拟地球) – 2009-07-30 17:43:24

+0

从上一页继续) 通过使用ControllerFactory,我们正在模拟对以上几点非常有利的接口实现设计。 – PadmakarKulkarni 2009-07-31 12:02:06

回答

1

如果MyController控制器类位于不同的项目中,则创建路由将失败,因为当应用程序启动时,MVC将使用后缀'Controller'反映执行程序集中的所有类。如果找不到相应的控制器名称,则应用程序将无法启动。

我试图在不同的项目中移动/访问控制器(一个很好的例子是在管理工具项目中,您可能需要分离应用程序的某些方面)。这导致了错误。

如果有人知道这是不对的,那么请让我知道,因为我会被证明是错误的这一个。然而,我所有的观察和工作都指出了它没有的结论(即使这两个项目在同一个解决方案中)。

0

丹说的是正确的。要在另一个项目中使用控制器,您需要扩展DefaultControllerFactory。