2

我有两个领域:

ControlPanelPatients

两者都有一个名为 ProblemsController 的控制器,仅在名称上相似。期望的结果将是产生 /controlpanel/problems => MyApp.Areas.ControlPanel.Controllers.ProblemsController 和 /patients/problems => MyApp.Areas.Patients.Controllers.ProblemsController 的路由。

每个都有这样配置的路由:

public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "**Area Name Here**_default",
                "**Area Name Here**/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }

其中 ***** 此处的区域名称 ***** 是 ControlPanel 或患者。

当我去 /patients/problems/create (例如),我得到一个 404 路由错误说:A public action method 'create' was not found on controller 'MyApp.Areas.ControlPanel.Controllers.ProblemsController'

我不确定我做错了什么。

4

2 回答 2

1

实际上,问题出在 Autofac 2.1 的AutofacControllerFactory. 路由工作正常,但 autofac 很难找到合适的控制器。

对于使用 Autofac 和 MVC 2.0 的用户,Autofac 2.1 不支持区域。如果您的项目足够简单,Autofac 可能看起来适用于区域,但随着您的区域和控制器变得更加复杂,它会开始崩溃。

完整区域支持的票已关闭,相关代码已签入,但据我所知,它要到 2.2 才会发布。我将尝试从树干构建,我会报告它是如何进行的。

更新 是的,使用从树干构建的 Autofac 一切看起来都很好。希望2.2能尽快正式发布。

于 2010-04-26T15:13:23.777 回答
0

您是否尝试过将重载与命名空间参数一起使用?

ASP.NET MVC 2 Preview 2:区域重复控制器问题

于 2010-04-26T14:47:46.340 回答