我在mvc4应用程序中有2个区域,并且已经为每个区域注册了命名空间。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Intergration_default",
"Intergration/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
constraints: null,
namespaces: new[] { "WebApplication.Areas.Intergration.Controllers" }
);
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Vend_default",
"Vend/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional},
constraints: null,
namespaces: new[] { "WebApplication.Areas.MyController.Controllers" }
);
我可以访问Intergration / MyController但是当我尝试访问MyController时出现错误
找到了多个匹配名为“mycontroller”的控制器的类型。如果为此请求提供服务的路由('{controller} / {action} / {id}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由。
我做错了什么?我需要在global.asax
中做一些额外的事情吗?答案 0 :(得分:2)
根据您提供的代码/说明,听起来可能有几件事情:
Vend
的第二个区域注册看起来像是一个不正确的命名空间。而不是WebApplication.Areas.MyController.Controllers
它应该是WebApplication.Areas.Vend.Controllers
。我敢打赌,根控制器命名空间中有一个控制器,它与Vend
区域中的某个控制器名称共享。