Вы можете использовать asp-area
вместо asp-route
.
Startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(name: "out", template: "{area=Outbound}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Controller
[Area("Outbound")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
Go на домашней странице Outoing по href = "/ outbound / home / index"
Go на исходную домашнюю страницу по asp -area
@ Html .ActionLink («Go на выход на домашнюю страницу по @ Html .ActionLink», «Index» , "Home", new {area = "Outbound"})
Скриншоты теста
asp -route
Атрибут asp-route
используется для создания ссылки URL непосредственно на именованный маршрут. Используя атрибуты маршрутизации, можно назвать маршрут, как показано в SpeakerController
, и использовать в его действии Evaluations
:
[Route("/Speaker/Evaluations",
Name = "speakerevals")]
public IActionResult Evaluations() => View();
В следующей разметке атрибут asp-route
ссылается на именованный маршрут:
<a asp-route="speakerevals">Speaker Evaluations</a>
Вспомогательная функция тега привязки генерирует маршрут непосредственно к этому действию контроллера, используя URL-адрес /Speaker/Evaluations
. Сгенерированный HTML:
<a href="/Speaker/Evaluations">Speaker Evaluations</a>
Если asp-controller
или asp-action
указано в дополнение к asp-route
, сгенерированный маршрут может не соответствовать вашим ожиданиям.
Чтобы избежать конфликта маршрутов, asp-route
не следует использовать с атрибутами asp-controller
и asp-action
.
BTW, default route
и area route
автоматически назначают значение порядка их конечным точкам в зависимости от порядка, в котором они вызываются.
Разница между asp-route
и asp-controller
& asp-action
Маршрут имена (asp-route
) могут использоваться для генерации URL-адреса на основе указанного c маршрута.
В то же время {controller}/{action}
также генерирует сопоставления URL-адресов с Home
контроллером и Test
действием .
//works
<a asp-controller="home" asp-action="test">asp-controller="home" asp-action="test"</a><br>
//works
<a asp-route="test">asp-route="test"</a><br>
//InvalidOperationException
<a asp-route="test" asp-controller="home" asp-action="test">asp-route="test" asp-controller="home" asp-action="test"</a>
InvalidOperationException
возникает при установке обоих в одном теге <a>
.
введите описание изображения здесь