.NET MVC3 routing - why so confusing?
===

I don't know why I constantly struggle with this, but can someone explain why this doesn't work?

`/` redirects to the `index` action of the `home` controller.

`/gallery/` throws a 404 not found error.

`/gallery/index` redirects to the `index` action of the `gallery` controller.

From the [documentation](http://msdn.microsoft.com/en-us/library/cc668201.aspx):

>When you define a route, you can assign a default value for a parameter. The default value is used if a value for that parameter is not included in the URL.   You set default values for a route by assigning a dictionary object to the Defaults property of the Route class.

I don't understand how this doesn't follow that rule:

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
            );
        }

To me it reads:

- If a `controller` is not defined, use `Home`.
- If an `action` is not defined, use `Index`.
- URL entered contains a controller = `gallery` and an action **is not included in the URL** so it should be going to the `Index`.

Am I missing something or this unnecessarily confusing and silly?  

I've always found MVC3 routing problematic but accepted it.  Then I started playing with Rails and Node frameworks and they have ridiculously simple routing so now .NET MVC just annoys me when it doesn't work or makes me use convoluted patterns.

For reference in case someone asks, my Gallery controller, Action and View are all defined and working when I browse to `/gallery/index`.

    public class GalleryController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }