Маршрутизация к другому действию, чем индекс по умолчанию - PullRequest
0 голосов
/ 13 сентября 2018

Я уже долго искал, но для этого случая я не нашел ответа.

У меня есть HomeController, и маршрут по умолчанию в моем route.config выглядит следующим образом:

routes.MapRoute(
    name: "Default",  
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Итак;http://localhost:36690/Home автоматически вызывает Index.

У меня также есть MyController (и это собственный маршрут в route.config ) с методом Index, и я могу просто написать http://localhost:36690/My и это работает.

Но я хочу иметь собственный маршрут без любой Index.

Если я запрашиваю localhost:36690/New, он должен позвонить BASIC.

Итак, я попробовал следующее:

routes.MapRoute(
    "New",
    "{controller}/{action}",
    new { controller = "New", action = "Basic" }
);

Но он игнорирует мое действие по умолчанию «Basic» и выдает ошибку:

Ошибка сервера в '/'Заявка.Этот ресурс не может быть найден."

1 Ответ

0 голосов
/ 13 сентября 2018

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

routes.MapRoute(
    name: "New",
    url: "New/{action}",
    defaults: new { controller = "New", action = "Basic" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Таким образом, при вызове /New по умолчанию будет NewController.Basic

...