Пользовательский маршрут к странице о бритве в ASP.Net Core 2.1 - PullRequest
0 голосов
/ 25 июня 2018

Я хотел бы переместить страницу «О программе» в базовом проекте, в котором скаффолды .Net Core 2.1, находятся в каталоге под названием Public (/Public/About.cshtml), но по-прежнему вызывать его с помощью пункта меню скаффолдинга - т.е.

<a asp-page="/About">About</a>

Как мне это сделать?

1 Ответ

0 голосов
/ 25 июня 2018

После перемещения вашей страницы About в новую подпапку Pages / Public и все еще хотите сохранить "/ About" в качестве URL этой страницы, вы можете изменить свой маршрут дляна этой странице это то, что нужно сделать:

Изменить <a asp-page="/About">About</a> на <a asp-page="/Public/About">About</a>

asp-page помощник по тегам ожидает путь к файлу страницы бритвы, а не URL.Он будет генерировать окончательный URL-адрес на основе соглашений или пользовательских маршрутов, которые вы добавляете.

В вашем методе ConfigureServices вам необходимо настроить, чтобы / Public / About страница бритвы использовала /About какмаршрут, а не /Public/About, который будет использоваться по умолчанию, если вы его не настроите.Таким образом, вы должны иметь это в своем методе:

services.AddMvc()
    .AddRazorPagesOptions(
        options => options.Conventions.AddPageRoute("/Public/About", "/About")
    );

Первый параметр метода AddPageRoute - это путь к странице бритвы, а второй параметр - новый маршрут.Поэтому, если вы запустите приложение и нажмете на ссылку About, вы увидите, что /About будет точно соответствовать /Public/About.Браузер также не содержит /Public/.

Проверьте официальную документацию , если хотите узнать больше о пользовательской маршрутизации для Razor Pages.

...