I'm trying to use areas within MVC app, I would like that the default route will be resolved to the HomeController within the admin area but it resolves to the home controller in root site. I added the namespace of the admin HomeController but it still resolved to the root HomeController.
My Route config:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] {"MvcApplicationAreas.Areas.Admin.Controllers"}
);
}
}
admin area route
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
HomeController - Admin area
namespace MvcApplicationAreas.Areas.Admin.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
Any idea why it wouldn't resolve properly? Thanks
Try doing this way....it will help in distinguish.Even if you dont add area="Web", its fine
Same way
Add the Index action method in your default root home controller. In the Index action method use "return redirecttoaction" statement for the default area redirection
Default route should be
The most straightforward way is to add a data token to your default route:
Simply add
to the end of your default route definition.
default route is by default route in MVC will call at first because in MVC which route is specified very first it will call like that
This solution will broke your API route. You must have some unique name for each area, like the default area makes it:
The correct solution to default route below:
Web area route:
Main route which redirect users to the "Common" area:
Easiest way to route from areas from AreaRegistration Page: