Почему RedirectToAction включает литерал из моего шаблона маршрута в создаваемый им URL - PullRequest
0 голосов
/ 27 мая 2018

Я создаю веб-сайт с использованием ASP.Net MVC и .Net Core 2.

Когда пользователь входит на мой сайт, они перенаправляются на URL https://localhost/Games/Home
Это не то, что яwant.

Я ожидаю, что они будут перенаправлены на URL https://localhost/

При отладке приложения я обнаружил, что метод, который выполняет перенаправление, находится в классе AccountController, созданном Visual Studio.:

RedirectToAction(nameof(HomeController.Index), "Home");

Мои маршруты выглядят так:

                routes.MapRoute(
                   name: "games",
                   template: "Games/{controller}/{*tags}",
                   defaults: new { area = "Games", action = "Index" });

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

Я не понимаю, почему метод RedirectToAction генерирует URL-адрес, который включает в себя литерал «Игры» из моего шаблона маршрута.У меня есть область с именем Games, но я ожидаю, что вызов RedirectToAction не будет ей соответствовать.

Хотя я уже нашел исправление.Но я все еще хотел бы понять.

Исправление заменяет первый маршрут на:

               routes.MapRoute(
                   name: "games",
                   template: "{area}/{controller}/{*tags}",
                   defaults: new {action = "Index" });

1 Ответ

0 голосов
/ 27 мая 2018

Вы можете использовать метод RedirectToRoute ().Создать новый маршрут.И укажите значения для контроллера и метода действия.Как только пользователь войдет в ваше приложение, вызовите метод RedirectToRoute с этим именем маршрута в качестве параметра.

...