Якорный тег ASP.NET Core Razor Page не работает внутри области - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть набор бритвенных страниц в обычном месте для проекта ASP.NET Core ...

/Pages/Index.cshtml
/Pages/About.cshtml
...etc...

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

/Pages/Shared/_Layout.cshtml

Внутри _Layout.cshtml у меня есть якорные теги в верхнем и нижнем колонтитулах страницы для возврата на страницу индекса, как это ...

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

... который генерирует фактический href 'http://localhost/About'. Это правильно и работает просто отлично. С тех пор я добавил несколько страниц бритвы в области, как это ...

/Areas/Account/Pages/Settings/UserSettings.cshtml

Я хочу, чтобы для страниц области «Учетная запись» отображался тот же заголовок и нижний колонтитул, что и для моих главных страниц, поэтому я установил начальный файл просмотра ...

/Areas/Account/_ViewStart.cshtml

... чтобы использовать уже существующий макет, как это ...

@{
    Layout = "/Pages/Shared/_Layout.cshtml";
}

... и, конечно же, моя страница UserSettings теперь отображает верхний и нижний колонтитулы страницы, как и ожидалось. С соответствующими изображениями и текстом.

За исключением одной проблемы . Якорные теги не генерируют правильную ссылку для любой бритвенной страницы в области учетной записи. Вместо генерации ...

href="http://localhost/About" 

... он генерирует ...

href="http://localhost/Account/Settings/UserSettings" 

Я полагаю, что он генерирует href по умолчанию для страницы UserSettings.

Есть идеи?

1 Ответ

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

Я считаю, что вам нужно изменить

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

до

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

\ это Escape-символ и / - разделитель. Вы не будете правильно ориентироваться в области, если используете asp-page="\About".

...