Проблема маршрутизации MVC - PullRequest
1 голос
/ 13 января 2010

Я изучаю MVC, и мне нужно понять, почему это не работает так, как должно.

Вот мой маршрут:

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
        );


    }

Как я понимаю маршрутизацию, я должен увидеть следующий URL при запуске веб-приложения:

Http: / локальный / магазин /

То, что я получаю, это второй маршрут ....

Кроме того, если я изменю второй маршрут на "home / {action} / {id}, он не поймает никаких маршрутов.

Не могли бы вы помочь мне понять это, пожалуйста .. Спасибо

Ответы [ 2 ]

0 голосов
/ 13 января 2010
0 голосов
/ 13 января 2010

Маршруты не указывают URL по умолчанию; URL по умолчанию обрабатывается вашим приложением. Маршрутизация указывает, что когда он видит http://localhost/store/bikes/mountain,, он будет использовать контроллер каталога. Но это не определяет URL по умолчанию; Вы должны ввести это в свойствах проекта.

Я бы порекомендовал не менять второй, потому что, если вы не создаете группировки для всех своих контроллеров, лучше использовать стандартные по умолчанию, чтобы вы могли перехватывать все URL. Ваше изменение на второе потребует URL:

http://localhost/home/home/index, чтобы соответствовать действию индекса HomeController, тогда как настройка по умолчанию ловит http://localhost/home/index...

Имеет ли это смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...