Пропустить имя контроллера из URL mvc - PullRequest
5 голосов
/ 03 июля 2010

Я ищу что-то похожее на этот пост:

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

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

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

Я хочу нажать http://website.com/action-name

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

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

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

Ответы [ 2 ]

7 голосов
/ 03 июля 2010

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

3 голосов
/ 03 июля 2010

Проблема в том, что ваш маршрут по умолчанию все еще, вероятно, на месте, поэтому он сначала сопоставляет его и по умолчанию принимает остальные ожидаемые входные данные. Исходя из вашего комментария о том, что controller/action работает, я думаю, что вы не удалили его или он появляется первым. Можете ли вы опубликовать все ваши 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" });
}
...