RouteArea和“找到与URL匹配的多个控制器类型”错误

时间:2015-08-14 17:39:04

标签: asp.net-mvc model-view-controller routing

假设我的MVC应用程序中有这个主控制器:

[RouteArea("Blog")]
public class PageController : BaseAppController
{
}

[RouteArea]
// Called on mydomain/Blog
// and also called on mydomain/
public class BaseAppController : Controller
{
    [Route]
    public ActionResult Index()
    {
        return Content("this is the index file form the main controller");
    }
}

正如预期的那样,我会在Index上获得mydomain/Blog行动,但出于某种原因,我也会在我的/中得到它,这与另一个我从另一个观点发生的冲突相冲突控制器。 我的任何根源都没有任何默认设置:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.LowercaseUrls = true;
    routes.MapMvcAttributeRoutes(new CustomDirectRouteProvider());

}

任何想法是什么问题?

1 个答案:

答案 0 :(得分:0)

它出现了我需要将基类设置为abstract,因为它位于层次结构的顶部,因此其他视图不会访问任何其他实例。 所以在上面的例子中:

[RouteArea("Blog")]
public class PageController : BaseAppController
{
}

[RouteArea]
// is going to be called just on mydomain/Blog and not on mydomain/
public abstract class BaseAppController : Controller
{
    [Route]
    public ActionResult Index()
    {
        return Content("this is the index file form the main controller");
    }
}