Следующее должно работать в вашей области регистрации:
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.Add(
"Admin_default",
new Route("Admin/{controller}/{action}/{id}",
new RouteValueDictionary(
new { action = "Index", id = UrlParameter.Optional }
),
null,
new RouteValueDictionary(
new
{
area = AreaName
}
),
new HyphenatedRouteHandler()
)
);
}
UPDATE:
Похоже, у вас одно и то же имя контроллера в нескольких областях, что невозможно без определения ограничения пространства имен при регистрации маршрутов, так как полученное сообщение об ошибке предлагает вам сделать.
Так в вашем Global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(
"Default",
new Route(
"{controller}/{action}/{id}",
new RouteValueDictionary(
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
),
null,
new RouteValueDictionary(
new { Namespaces = new[] { "AppName.Controllers" } }
),
new HyphenatedRouteHandler()
)
);
}
и в вашей Региональной Регистрации:
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.Add(
"Admin_default",
new Route(
"Admin/{controller}/{action}/{id}",
new RouteValueDictionary(
new { action = "Index", id = UrlParameter.Optional }
),
null,
new RouteValueDictionary(
new
{
Namespaces = new[] { "AppName.Areas.Admin.Controllers" },
area = AreaName
}
),
new HyphenatedRouteHandler()
)
);
}
Возможно, вам придется настроить пространство имен в ограничении так, чтобы оно совпадало с вашим.