ASP.NET MVC Controller与Areas下面的Controller同名的解决办法
问题重现:
当项目下:Controller/HomeController.cs时,
人在创建一个域Test,之后在建一个同名的HomeController: Areas/Test/Controller/HomeController.cs
运行报错:
Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}/') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'Home' has found the following matching controllers:
Web.Areas.Test.Controllers.HomeController
Web.Controllers.HomeController
解决办法:
/Areas/Test/TestAreaRegistration.cs
代码
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}/",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Web.Areas.Test.Controllers"}
);
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}/",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Web.Areas.Test.Controllers"}
);
/Global.asax
routes.MapRoute(
"Home", // Route name
"{controller}/{action}/{id}/", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Web.Controllers"}
);
"Home", // Route name
"{controller}/{action}/{id}/", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Web.Controllers"}
);
--------------------------------------------------------------------------
Daniel Chow's Blog - 不管你在哪里,都要有一颗创业的心!
http://www.cnblogs.com/DanielChow/