Правильный способ использования asp -page и asp -route в asp. net основных страницах бритвы между _layout и страницей индекса - PullRequest
0 голосов
/ 24 апреля 2020

Ниже приведена структура файла

enter image description here

У меня есть значение по умолчанию Страница индекса в папке Pages, которая имеет макет _LayoutHarman.cshmtl

Код: Pages / Shared / _LayoutHarman. chtml

меню заголовка: страницы находятся в подпапке. ie папка категории в этом случае

    <a asp-route-cat_slug="electronic" asp-page="./category/Index">Electronic</a>
    <a asp-route-cat_slug="beauty-care" asp-page="./category/index" >Beauty Care</a>
    <a asp-route-cat_slug="toy" asp-page="./category/index" >Toy</a>

меню нижнего колонтитула: страницы находятся на root папке

<a asp-page="./Contact" >Contact</a>
<a asp-page="./terms" >Terms</a>
<a asp-page="./privacy" >Privacy</a>

Код: Pages / category / Index.cs html

    @page "{cat_slug?}/{pageIndex:int?}"
    @model bList.Pages.category.IndexModel
@{
 }
    <nav aria-label="Page navigation example">
    <ul class="pagination text-center">
        @if(Model.prev_no!=0){
            <li><a asp-page="category" asp-route-cat_slug="@Model.cat_url" asp-route-pageIndex="@Model.prev_no">  Previous</a></li>
        }
        @if (Model.no_more_record != "YES")
        {
          <li><a asp-page="category"  asp-route-cat_slug="@Model.cat_url" asp-route-pageIndex="@Model.next_no">Next</a></li>
        }
    </ul>
    </nav>

Здесь Следующая / предыдущая кнопка генерирует URL следующим образом

https://localhost: 8080 / категория / игрушка / 1

https://localhost: 8080 / категория / игрушка / 2

https://localhost: 8080 / категория / игрушка / 3

соответственно на выбранном категория

Проблема: Когда я захожу на страницу категории и нажимаю на кнопку «Предыдущая или Следующая», а затем пытаюсь нажать на ссылку Контакт, Условия, Конфиденциальность т.е. (который находится на _LayoutHarman.cs html) или в меню заголовка, тогда href становится bl ank .


Отредактировано:

Код: включено _LayoutHarman.cs html

ЗаголовокМеню:

<a  href="./category/toy" >toy</a>

Меню нижнего колонтитула

<a asp-page="./Contact" >Contact</a>
<a asp-page="./terms" >Terms</a>

Код: в категории / указателе. html страница

<a href="/category/@Model.cat_url/@Model.prev_no">Prev</a></li>
<a href="/category/@Model.cat_url/@Model.next_no">Next</a>

Сейчас включено Next / Prev нажатие кнопки, заголовок меню генерирует url как https://localhost: 44382 / category / toy / category / toy , следовательно, появляется страница с ошибкой. но для меню нижнего колонтитула контакт / термин / конфиденциальность работает должным образом

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Я воспроизвел вашу проблему, вам нужно delete the point(.) в атрибуте asp-page в вашем _LayoutHarman.cshmtl.

Изменено так:

<a asp-route-cat_slug="electronic" asp-page="/category/Index">Electronic</a>
<a asp-route-cat_slug="beauty-care" asp-page="/category/index" >Beauty Care</a>
<a asp-route-cat_slug="toy" asp-page="/category/index" >Toy</a>

<a asp-page="/Contact" >Contact</a>
<a asp-page="/terms" >Terms</a>
<a asp-page="/privacy" >Privacy</a>

А вы этого не делаете нужно добавить asp-page="category" в Pages/category/Index.cshtml, просто удалите этот атрибут на этой странице.

Вот мой результат теста:

enter image description here

0 голосов
/ 24 апреля 2020

Вам действительно нужна вся эта дополнительная обработка на стороне сервера, asp -route-cat_slug asp -page? Разве вы не можете просто использовать гиперссылку старой моды HTML? Что касается параметров Dynami c, может быть, вы можете установить только их ...

<a href="/category/toy/@Model.GetCategoryID">View category</a>

Просто идея, чтобы подумать ...

Cheers

...