Загрузить страницу внутри элемента Body внутри страницы, которая была загружена в другом элементе Body?

У меня 3 страницы. 1. Пустая страница, на которой есть только @Body. Я сохраняю это как пробел, где отображаются другие страницы. 2. Вторая страница, которая имеет элементы управления и @Body, и она загружается внутри 1-й пустой страницы. 3. Третья страница, которая должна быть помещена в @Body второй страницы без разрушения ее содержимого.

в любом случае, когда я пытаюсь загрузить NavigationManager.NavigateTo( "/page3" ); со второй страницы - содержимое второй страницы уничтожается и заменяется содержимым страницы 3.

  • Как я могу загрузить борьбу на вторичную страницу, не разрушая ее ?!

введите здесь описание изображения


person Reevee    schedule 10.06.2020    source источник
comment
Мы любим код, поделитесь своим кодом.   -  person agua from mars    schedule 11.06.2020
comment
Похоже, вам нужен общий компонент. docs.microsoft.com/en-us/ aspnet / core / blazor /   -  person Kane    schedule 11.06.2020
comment
Обновил пост. Сделаю образец, если объяснения недостаточно.   -  person Reevee    schedule 14.06.2020


Ответы (1)


Вы можете иметь пробел по умолчанию @Body только для компонента макета, унаследованного от LayoutComponentBase. Первая пустая страница обязательно сделает это, иначе страница 2 не будет отображаться. Но чтобы иметь заполнитель @Body на странице 2 и использовать маршрутизацию для перехода на страницу 3, вам необходимо, чтобы страница 2 также была макетом. Итак, что вам на самом деле нужно сделать, так это сделать page2 также макетом, установить его макет на page1 и установить макет page3 на page2. И если вы хотите, чтобы на каком-то маршруте отображалась только страница 2 с пустым @Body, вы должны установить для этого маршрута полностью пустую страницу и установить ее макет на страницу 2. Что-то вроде:

BlankPageLayout.razor

@inherits LayoutComponentBase

@Body

Page2Layout.razor

@inherits LayoutComponentBase
@layout BlankPageLayout

<some html>
    @Body
</some html>

Страница 2. бритва

@page "/page2"
@layout Page2Layout

Страница 3. бритва

@page "/page3"
@layout Page2Layout

<some html></some html>

теперь, перейдя на page2, вы получите только Page2Layout и перейдете к page3 вы получите Page2Layout с содержимым page3 внутри.

person Дмитро Іванов    schedule 15.06.2020