Маршрутизация с документом по умолчанию - PullRequest
2 голосов
/ 13 марта 2011

Мне действительно тяжело разобраться с маршрутизацией.Вероятно, об этом уже спрашивали, но я не смог найти его или не задал правильный путь ...

Я портирую поверх существующего классического сайта asp и начинаю с добавления панели администратора.Что мне нужно, так это то, что когда пользователь просто вводит имя сайта, загружается документ по умолчанию (default.asp), однако, если они вводят {site} / Admin, тогда начинается маршрутизация.Мой контроллер маршрута по умолчанию называется «AdminController», и мой проект настроен для запуска в / Admin.Это работает, но все остальное не работает, если я не вернусь к базовому маршруту по умолчанию, который идет с новым проектом.

Желания:

  1. {site} -> {site} /default.asp
  2. {site} / Admin -> Admin / Индекс действия
  3. {site} / Admin / Магазины -> Магазины / Индекс действия
  4. {site}/ Admin / Магазины / Правка / {id} -> Магазины / Правка (id) action

Вот мой маршрут, я где-то застрял:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.RouteExistingFiles = true;
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "EditShop", // Route name
            "Shops/Edit/{slug}", // URL with parameters
            new
            {
                controller = "Shops",
                action = "Edit",
                slug = ""
            } // Parameter defaults
        );

        routes.MapRoute(
            "Shops", // Route name
            "Admin/Shops/", // URL with parameters
            new
            {
                controller = "Shops",
                action = "Index"
            } // Parameter defaults
        );

        // default route for this app
        routes.MapRoute(
            "Admin", // Route name
            "Admin/", // URL with parameters
            new { controller = "Admin", action = "Index" } // Parameter defaults
        );

       //  default route for this app (this works for all cases except default.asp)
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
        );

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

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Есть несколько сообщений, которые отвечают на этот вопрос , например, этот

0 голосов
/ 13 марта 2011

Я вижу, вы сопоставили EditShop с магазинами / Edit.Это, вероятно, должно быть сопоставлено с Admin / Shops / Edit для достижения того, что вы хотите.Я не вижу проблем с другим маршрутом, но могу ошибаться.

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