user547794
user547794

Reputation: 14521

Working with routes.maproute and parameters

I am have a parameter that I want to use as the default ending of a URL, but it is currently a parameter. I want it to always direct to the Home Controller & Index Action, but the "/" becomes the pageName parameter.

For example, I want

http://localhost:18792/?pageName=HomePage

To be accessible by:

http://localhost:18792/HomePage

This is my current routes.maproute:

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

Upvotes: 2

Views: 3242

Answers (1)

viperguynaz
viperguynaz

Reputation: 12174

To do this, you will have to create a route for each page. Don't modify the "Default" route. . Add a new route:

routes.MapRoute(
    name: "HomePage",
    url: "HomePage",  
    defaults: new { controller = "Home", action = "HomePage" }
);

for dynamic routes, you could use:

routes.MapRoute(
    name: "PageName",
    url: "{pageName}",  
    defaults: new { controller = "Home", action = "Index", pageName = "defaultPage" }
);

which will map to ~/defaultpage or ~/homepage with the Action "Index" in the "Home" controller:

    public ActionResult Index(string pageName)
    {
        ViewBag.Message = pageName;
        return View();
    }

Upvotes: 4

Related Questions