Removing Controller from url in a specific scenario

I want to remove Controller named Home from url when user clicks on About and Contact pages in ASP.NET MVC sample application. I tried this but it is giving me a 404 error.

routes.MapRoute("Home", "{action}/{id}",
    new { controller = "Home" });

When i remove this all works perfectly.
Note I want to remove Controller name only when Controller is Home. Other Controller should remain same.
Further I kept the code in Route.Config file above

 routes.MapRoute("Home", "{action}/{id}",
     new { controller = "Home" });

 routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

Required Result

abc.com/Home/About should shown as abc.com/About
abc.com/Home/Contact should shown as abc.com/Contact

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

You should map new route in the global.asax (add it before the default one), for example:

routes.MapRoute("SpecificRouteforHomeController", "{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional});

// default route  any defalt you want
routes.MapRoute("Default", "{controller}/{action}/{id}", new {controller = "Account", action = "Login", id = UrlParameter.Optional} );

Solution 2

 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "DefaultControllerName", action = "Index", id = UrlParameter.Optional }
    );

If u will specify the controller name then this will work with that controller name. Bu if not the by default it will take controller name as DefaultControllerName.

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply