我知道在Stackoverflow上有很多关于这个特定错误的问题和帖子,但是,我似乎仍然尝试的任何东西都无法解决问题。
我有一个 MVC 5 网络应用程序,其中两个帐户控制器,一个在默认的Controller文件夹中,另一个在区域中,如此
当我尝试使用此Actionlink命中PCF360.UI.Controllers.AccountController内的Login Action时
@Html.ActionLink("Log in", "Login", "Account", new { area = "" }, null)
我收到以下错误
发现多个类型与名为“帐户”的控制器匹配。 “帐户”请求找到了以下匹配项 控制器:PCF360.UI.Areas.Admin.Controllers.AccountController PCF360.UI.Controllers.AccountController
内部区域 - >管理员 - > AdminAreaRegistration
我修改了context.MapRoute,就像这样
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "MyApp.UI.Areas.Admin.Controllers" }
);
App_Start中的MapRoute - > RouteConfig看起来像这样
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
有谁知道为什么我会收到此错误?
感谢您的帮助。
答案 0 :(得分:4)
尝试在RouteConfig中定义名称空间:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MyApp.UI.Controllers" }
);
答案 1 :(得分:2)
我参与了像你这样的项目。
我的管理区域注册是:
context.MapRoute(
"admin_default",
"admin/{controller}/{action}/{id}",
new { Controller="Home", action = "Index", id = UrlParameter.Optional }
);
我的RouteConfig是:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MyApp.Areas.admin.Controllers" }
);
也许像这样配置您的AdminAreaRegistration和RouteConfig可以解决您的问题。