Пути ASP.NET MVC

Мне нужна помощь в этой карте маршрутов

routes.MapRoute("Blog_Archive", 
                "Blog/Archive/{year}/{month}/{day}",
                new { 
                      controller = "Blog",
                      action = "archive",
                      year = "",
                      month = "",
                      day = "",
                      page = 0
                    });

Когда я вызываю http://localhost:5060/blog/Archive/2008/11, он выбирает год и месяц и отправляет его на контроллер. Но когда я попробую http://localhost:5060/blog/Archive/2008
он отправляет его контроллеру, но параметр года имеет значение null, и все остальные параметры.

Ответ 1

Есть ли у вас какой-либо другой маршрут для Blog/Archive/{something}?

Используйте Отладчик маршрутизации, чтобы узнать, какой маршрут на самом деле попал, скорее всего, он не ударил по этому маршруту.

Ответ 2

public static void RegisterRoutes(RouteCollection routes)
    {

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

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

        routes.MapRoute("Blog_Archive", "Blog/Archive/{year}/{month}/{day}", 
            new { 
                controller = "Blog",
                action = "archive",
                year = "",
                month = "",
                day = "",
                page =0
            });

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

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

        routes.MapRoute("About","About",
                        new
                        {
                            controller = "home",
                            action = "about"
                        });

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

        routes.MapRoute("Error", "{*url}", new
        {
            controller = "Home",
            action = "Http404"
        ,
        });

    }  

найдена ошибка

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

до

routes.MapRoute("Blog_Archive", "Blog/Archive/{year}/{month}/{day}", 
                  new { 
                        controller = "Blog",
                        action = "archive",
                        year = "",
                        month = "",
                        day = "",
                        page =0
                      });

Ответ 3

Subnus, Я заметил в вашем коде, что у вас есть маршруты. IgnoreRoute ( "favicon.ico" ); Я не думаю, что это необходимо для MVC 1.0 правильно, потому что этот период больше не игнорируется правильно?