我正在尝试将我的 MVC 项目分成多个区域。所以我有 3 个领域 1) crm 2) 服务 3) Web。我希望 PublicWeb 成为我的默认设置。这意味着它应该像 www.mysitename.com/mycontroller/myaction(中间没有区域名称)一样访问,而其他两个要使用区域名称(www.mysitename.com/crm/mycontroller/myaction)访问。我应该有什么路由/区域配置?我试过 AreaRegistration.RegisterAllAreas();
了,它只适用于我的默认一个(网络)。当我访问另外 2 个时,它抛出了 404 错误。
我尝试像下面这样单独注册
var area2reg = new crmAreaRegistration();
var area2context = new AreaRegistrationContext(area2reg.AreaName, RouteTable.Routes);
area2reg.RegisterArea(area2context);
var area1reg = new webAreaRegistration();
var area1context = new AreaRegistrationContext(area1reg.AreaName, RouteTable.Routes);
area1reg.RegisterArea(area1context);
然后我的公共网络工作。但是当我访问我的论坛时,它抛出了这个错误,
找到了与名为“home”的控制器匹配的多种类型。如果为该请求提供服务的路由 ('crm/{controller}/{action}/{id}') 未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。
我的 RegisterArea 函数web
是这个
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"web_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
一个crm
是这个
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"crm_default",
"crm/{controller}/{action}/{id}",
new { controller = "home", action = "Index", id = UrlParameter.Optional }
);
}
}
我该如何处理?