在单个UI视图中分离的Mvc控制器

时间:2014-05-05 07:57:35

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有两个类库项目和一个像这样的mvc Web UI项目。

  • Separated.Blog.Controller(包括HomeController,索引视图)
  • Separated.Admin.Controller(包括HomeController,索引视图)
  • Separated.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

1 个答案:

答案 0 :(得分:0)

每个区域都有自己的AreaRegistration类。您需要进行更改并设置控制器操作。

这就是你如何调用区域的控制器动作

'@Url.Action("ActionName", "Controller", new { Area="YourAreaName"})'