-
Add these 9 lines of code to your app
public class AdminRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
RouteData routeData = requestContext.RouteData;
routeData.Values["controller"] = "Admin" + requestContext.RouteData.GetRequiredString("controller");
return new MvcHandler(requestContext);
}
} -
Add a new route in your Global.asax.cs
routes.Add(
"AdminRoutes", // Route name
new Route(
"Admin/{controller}/{action}/{id}", // URL with parameters
new RouteValueDictionary(new { controller="Video", action = "Index", id=""}),
new AdminRouteHandler()) // Parameter defaults
);
Tada! You’re done! There’s one catch…
Controllers in the Admin area must start with the “Admin” prefix.
You then create appropriate folders for views as usual.
This is a bit of a hack, but I like the fact that it requires very little code and it’s very simple :) Also, it would be very easy to tweak this code to allow for general partitioning of controllers by prefix, so you could have a “Admin” area, a “Mobile” area etc.