Опустите название контроллера от URL mvc

Я надеюсь делать что-то подобное этому сообщению:

Как скрыть название контроллера в URL?

только без любого вида идентификатора.

Сервер выполняет IIS 6, и страницы уже обнаруживаются без расширений, таким образом, это не подстановочная проблема.

Я надеюсь поражать http://website.com/action-name

У меня есть работа http://website.com/controller/action-name

Я предполагаю, что это - просто простое изменение маршрутизации, которое я так или иначе проваливаю. Мое текущее правило маршрутизации:

routes.MapRoute(
    "RouteName",
"{action}",
new { controller = "Home", action = "Index" }
);

5
задан Community 23 May 2017 в 12:16
поделиться

2 ответа

Расположено ли ваше новое правило маршрутизации выше правила маршрутизации по умолчанию {controller, action, id}, чтобы оно имело возможность соответствовать первому?

7
ответ дан 13 December 2019 в 22:01
поделиться

Проблема в том, что ваш маршрут по умолчанию, вероятно, все еще существует, поэтому он сначала сопоставляет его, а остальные ожидаемые входные параметры по умолчанию. Основываясь на вашем комментарии о том, что контроллер / действие работает, я думаю, что вы не удаляли его или оно появляется первым. Можете ли вы опубликовать свои RegisterRoutes ?

Попробуйте сделать маршрут, который вы определили, самым первым маршрутом, и он должен соответствовать почти всему, что вы по нему проходите.

РЕДАКТИРОВАТЬ: Добавил, как должны выглядеть ваши RegisterRoutes :

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

    // This will match anything so if you have something very specific with hard coded
    // values or more items that will need to be match add them here above but do not
    // add defaulted values so it can still fall through to this.
    routes.MapRoute( 
        "RouteName", 
        "{action}", 
        new { controller = "Home", action = "Index" });
}
3
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: