ASP.NET MVC, manipulating a URL structure

How to create your own route handler in ASP.NET MVC?

+2
url-rewriting friendly-url asp.net-mvc
source share
1 answer

ASP.NET MVC makes it easy to create a custom route handler in the Global.asax.cs file:

routes.MapRoute( "Default", "{controller}.aspx/{action}/{id}", new { action = "Index", id = "" } ).RouteHandler = new SubDomainMvcRouteHandler(); 

This will cause all requests to be processed by the custom RouteHandler user. For this specific handler:

  public class SubDomainMvcRouteHandler : MvcRouteHandler { protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext) { return new SubDomainMvcHandler(requestContext); } } 

Then you can do whatever you want, in this case SubDomainMvcHandler grabs the subdomain from the URL and passes it to the controller as a property:

  public class SubDomainMvcHandler : MvcHandler { public SubDomainMvcHandler(RequestContext requestContext) : base(requestContext) { } protected override void ProcessRequest(HttpContextBase httpContext) { // Identify the subdomain and add it to the route data as the account name string[] hostNameParts = httpContext.Request.Url.Host.Split('.'); if (hostNameParts.Length == 3 && hostNameParts[0] != "www") { RequestContext.RouteData.Values.Add("accountName", hostNameParts[0]); } base.ProcessRequest(httpContext); } } 
+6
source share

All Articles