One approach would be to use a custom route constraint as here: https://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-custom-route-constraint-cs
You then use this to turn on and off certain routes from your route table dependent on the subdomain (which you can inspect in the route constraint code).
routes.MapRoute(
"Admin",
"Admin/{action}",
new { controller = "Admin"},
new { subdomainMatch = new SubdomainCriterion(SubdomainGroup.GroupA) }
);
So in this example, this route would only work for Group A of subdomains.
You could do this better in ASP.Net Core which has a much more flexible routing system, where you could have a completely different routing table for each subdomain or group of subdomains. Its more complex conceptually and a little difficult to follow, but very powerful. You can read about this here:
http://stephenwalther.com/archive/2015/02/07/asp-net-5-deep-dive-routing