发现多个类型的家庭控制器
Posted
技术标签:
【中文标题】发现多个类型的家庭控制器【英文标题】:Multiples types were found home controller 【发布时间】:2013-02-27 13:49:39 【问题描述】:我需要在新区域建一个新家,但我有一个错误: 找到了与名为“Home”的控制器匹配的多种类型。如果服务此请求的路由 ('controller/action/id') 未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。 我的新区
Areas/Administrativo/Controllers/HomeController
区域/行政/视图/主页
我的 AdministrativoAreaRegistration
public override void RegisterArea(AreaRegistrationContext context)
context.MapRoute(
"Administrativo_default",
"Administrativo/controller/action/id",
new controller = "Home", action = "Index", id = UrlParameter.Optional
);
在全球我有
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapRoute(
"Default", // Route name
"controller/action/id", // URL with parameters
new controller = "Home", action = "Index", id = UrlParameter.Optional , new[] "Preparacao.Gerenciar.Web.Controllers" // Parameter defaults
);
【问题讨论】:
【参考方案1】:你应该在你的区域路由注册中指定命名空间约束(检查命名空间是否正确):
public override void RegisterArea(AreaRegistrationContext context)
context.MapRoute(
"Administrativo_default",
"Administrativo/controller/action/id",
new controller = "Home", action = "Index", id = UrlParameter.Optional ,
new[] "Preparacao.Gerenciar.Web.Areas.Administrativo.Controllers"
);
与您注册主要路线的方式相同:
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapRoute(
"Default", // Route name
"controller/action/id", // URL with parameters
new controller = "Home", action = "Index", id = UrlParameter.Optional , // Parameter defaults
new[] "Preparacao.Gerenciar.Web.Controllers"
);
【讨论】:
谢谢我把 new[] "Preparacao.Gerenciar.Web.Controllers" 而不是 new[] "Preparacao.Gerenciar.Web.Areas.Administrativo.Controllers" 我放了这个,但我得到这个错误对我不起作用,你有更多的想法吗? 如果我输入localhost/HelpProvasGerenciar/Administrativo,我得到404,如果localhost/HelpProvasGerenciar我得到多个类型...... 这工作正常只是 Administrativo 但在默认 localhost/HelpProvas 不工作我得到错误倍数类型 public static void RegisterRoutes(RouteCollection routes) routes.IgnoreRoute("resource.axd/*pathInfo"); routes.MapRoute( "Default", // 路由名称 "controller/action/id", // 带参数的 URL new controller = "Home", action = "Index", id = UrlParameter.Optional , 新 [] "Preparacao.Gerenciar.Web.Controllers" );我的项目名称是 Preparacao.Gerenciar.Web.Controllers以上是关于发现多个类型的家庭控制器的主要内容,如果未能解决你的问题,请参考以下文章