tags:

views:

78

answers:

2

I am learning MVC and I need to understand why it doesn't work the way it should.

Here is my routing :

public static void RegisterRoutes(RouteCollection routes)
    {

        // Note: Change the URL to "{controller}.mvc/{action}/{id}" to enable
        //       automatic support on IIS6 and IIS7 classic mode

        //http://localhost/store/category/subcategory/product

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


        routes.MapRoute(
            "Category",                                              // Route name
            "store/{category}/{subcategory}",                        // URL with parameters
            new
            {
                controller = "Catalog",
                action = "Index",
                category = "Featured Items",
                subcategory = "All Items"
            }
        );


        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }, // Parameter defaults
            new { controller = @"[^\.]*" }                          // Parameter constraints
        );


    }

The way I understand routing I should see the following url when I start the web app :

http:/localhost/store/

What I get is the second route....

Furthermore if I change the second route to "home/{action}/{id} it doesn't catch any routes.

Could you help me understand this please..Thanks

A: 

Hey,

Routes do not specify default URL; the default URL is handled by your app. Routing specifies that when it sees http://localhost/store/bikes/mountain, it will use the catalog controller. But that doesn't specify the default URL; you have to enter that in the project properties.

I would recommend not changing the second one because unless you are creating groupings for all of your controllers, it's best to have the default as it is so you can catch all URL's. Your change to the second one would require the url to be:

http://localhost/home/home/index to match the HomeController's index action, whereas the default setup catches http://localhost/home/index...

Does that make sense?

Brian