Как отключить pageName после сопоставления маршрута страницы? - PullRequest
0 голосов
/ 01 ноября 2018

Я использую ASP.NET Core с Pages , и я создал контроллер, подобный этому:

namespace Demo.Pages.Channel
{
    public class IndexModel : PageModel
    {
        public string ChannelUrl { get; set; }

        public void OnGet(string url)
        {
            ChannelUrl = url;
        }
    }
}

И я попытался наметить маршрут:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AddPageRoute("/channel/index", "/{url}");
        options.Conventions.AddPageRoute("/home/error", "/channel/index");
    });

И вот несколько случаев, которые я проверял:

1

2

Работает нормально. Но все равно работал , когда я пытался:

3

В приведенных выше вариантах я сопоставил URL /channel/index со страницей ошибок /home/error, но страницу нельзя перенаправить. Почему?

Я хочу отобразить URL как: localhost:44392/{url}, но localhost:44392/channel/index

Как я могу это сделать?

1 Ответ

0 голосов
/ 05 ноября 2018

У меня есть решение, которое усложнило мне понимание, почему нам нужно использовать эту конфигурацию:

.AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/channel/index", "/{url}");
    //options.Conventions.AddPageRoute("/home/error", "/channel/index");
});

Чтобы отобразить маршрут, мы настроим это следующим образом на страницах бритвы:

<!-- index.cshtml -->
@page "/{url}"

<!-- profile.cshtml -->
@page "/users/{userId}/profile"

<!-- error.cshtml -->
@page "/custom/error"

Итак, нам нужно удалить конфигурацию .AddRazorPagesOptions().

...