Как скрыть название «Площадь» в URL? - PullRequest
0 голосов
/ 26 апреля 2018

Моя проблема в том, что, когда я не нахожусь в моей области "Администратор", ссылка отображается как " / blog ", однако, когда я нахожусь в моей области "Администратор", ссылка превращается в " / админ / блог ».

У меня есть область «Администратор», и я указал страницу макета в файле Viewstart в разделе «Область» «Администратор». Разметка ниже:

 Layout = "~/Views/Shared/_Layout.cshtml";

Разметка моей ссылки выглядит следующим образом (эта ссылка находится в моем _Layout.cshtml представлении):

 <a asp-controller="Blog" asp-action="Index" class="nav-link"> Blog </a>

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

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

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

И мой контроллер в моей области «Админ» выглядит так:

[Authorize(Roles = "Admin")]
[Area("Admin")]
public class ProductsController : Controller

Я попытался добавить asp-area = "", чтобы мой тег выглядел так:

<a asp-area="" asp-controller="Blog" asp-action="Index" class="nav-link"> Blog </a>

Но это просто оставляет пустую ссылку, если смотреть на нее через инструменты разработчика.

Итак, мой вопрос: как я могу удалить название области из URL?

Я чувствую, что это что-то действительно легкое, но я не могу понять это. Я посмотрел на этот поток, но он не в ядре .net, поэтому решение не работает.

1 Ответ

0 голосов
/ 27 апреля 2018

Ваша проблема может быть связана с вашими определениями маршрута. Попробуйте объединить маршруты в один вызов UseMvc, а также сначала поместить маршрут более определенной области.

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

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

После этого вы можете переключить свой тег на использование asp-route="default" вместо использования asp-controller="..." и asp-action="...".

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