Почему маршрутизация вызывает HomeController Index, когда он должен быть сопоставлен с другим контроллером? - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу, чтобы URL https://localhost: 44354 / Bills вызывал действие Index в BillsController.cs. Вместо этого он вызывает действие Index из HomeController.cs. Если я использую https://localhost: 44354 / Bills / Bills , это вызывает действие Index BillsController.

Как я понимаю, Bills должен отображаться на контроллере и по умолчанию он должен Index без второго параметра в URL. Чтобы проверить, я попытался https://localhost: 44354 / Счета / Индекс , которые дают 404. Может кто-нибудь объяснить это поведение? Кажется, он работает неправильно.

Маршрутизация в моем файле Startup.cs:

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

BillsController:

public class BillsController : Controller
    {    
        public IActionResult Index()
        {
            return View();
        }
    }

Структура моей папки:

enter image description here

1 Ответ

1 голос
/ 09 апреля 2020

@ NickOban, я попытался создать новый проект MCV и добавил контроллер счетов. Затем я добавил репозиторий Bills и добавил index.cshtml enter image description here

И путь работал для меня. Тем не менее, кажется, что в какой-то момент вы могли реализовать префикс с именем «Счета», что может вызвать явление, которое вы испытываете.

Убедитесь, что в вашем коде нет префиксов нигде. Приложение MVC должно автоматически исправлять любые префиксы. Дополнительно попробуйте https://localhost:44354/Bills/Index.cshtml вместо простого индекса ~, потому что тогда MVC предполагает, что индекс является папкой.

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