#c# #.net #asp.net-mvc #asp.net-core
#c# #.net #asp.net-mvc #asp.net-ядро
Вопрос:
У меня есть веб-приложение .Net 3.1 core со следующей разметкой, которую я использую в качестве навигации:
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="About" asp-action="About">About</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="Students" asp-action="Students">Students</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="Courses" asp-action="Courses">Courses</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="Instructors" asp-action="Instructors">Instructors</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-area="" asp-controller="Departments" asp-action="Departments">Departments</a>
</li>
</ul>
Однако, когда я запускаю приложение с помощью кнопки «Пуск», URL-адреса hrefs содержат действия, перечисленные дважды, например
<li class="nav-item">
<a class="nav-link text-white" href="/About/About">About</a>
</li>
вместо
<li class="nav-item">
<a class="nav-link text-white" href="/About">About</a>
</li>
Есть ли в файлах моего контроллера параметры действий, которые мне нужно изменить?
Где находится файл, содержащий маршрутизацию?
Спасибо,
Роберт
Комментарии:
1. Вы установили
asp-controller
иasp-action
то же самое. Я думаю, все ваши действияHomeController
включены, тогда всеasp-controller
должно быть дома.
Ответ №1:
Как указал @gidanmx2, по умолчанию маршруты похожи controller/action
.
На ваш взгляд, вы установили и контроллер, и действие одинаково.
<a class="nav-link text-white" asp-area="" asp-controller="About" asp-action="About">About</a>
Вот почему у вас есть эта ссылка About / About.
Я предполагаю, что вы не создали один контроллер для каждого своего действия, поэтому установите правильный контроллер asp-controller
, и все должно быть в порядке. Возможно Home
?
Ответ №2:
По умолчанию маршруты определяются в Startup.cs, как вы можете видеть, есть действие по умолчанию с именем «Index», если вы переименуете свое действие «About» в «Index», тогда ваша ссылка будет «/ About»
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Вы также можете украсить действие Route
атрибутом, чтобы определить пользовательский маршрут.
Комментарии:
1. Спасибо, Гидан, ты попал в точку!