我有两个类库项目和一个像这样的mvc Web UI项目。
我像这样配置了UI Route配置。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Blog",
"{controller}/{action}/{id}",
new {controller="Home", action = "Index",id = UrlParameter.Optional },
new[] { "Separated.Blog.Controller" });
routes.MapRoute("Admin",
"{controller}/{action}/{id}",
new{controller="Home",action="Index",id = UrlParameter.Optional },
new[] { "Separated.Admin.Controller" });
}
namespace Separated.Admin.Controller.Controllers
{
public class HomeController:System.Web.Mvc.Controller
{
public ActionResult Index()
{
return Content("This is Admin index page");
}
}
}
namespace Separated.Blog.Controller.Controllers
{
public class HomeController: System.Web.Mvc.Controller
{
public ActionResult Index()
{
return Content("This is Blog index page...");
}
}
}
当我运行项目时,会出现如下错误:
发现多个类型与名为' Home'的控制器匹配。这个 如果为此请求提供服务的路由可能会发生 (' {controller} / {action} / {id}')未指定要搜索的命名空间 对于匹配请求的控制器。如果是这种情况, 通过调用' MapRoute'的过载来注册此路线。方法 这需要一个名称空间'参数。
' Home'找到了以下匹配的控制器: Separated.Admin.Controller.Controllers.HomeController Separated.Blog.Controller.Controllers.HomeController
我想启动Blog Home控制器,例如localhost / Home / Index。并致电管理员控制器localhost / Admin / Home / Index
答案 0 :(得分:0)
每个区域都有自己的AreaRegistration类。您需要进行更改并设置控制器操作。
这就是你如何调用区域的控制器动作
'@Url.Action("ActionName", "Controller", new { Area="YourAreaName"})'