【问题标题】:Load page inside Body element inside page which was loaded in other Body element?在其他 Body 元素中加载的页面内的 Body 元素内加载页面?
【发布时间】:2020-06-10 22:46:35
【问题描述】:

我有 3 页。 1.一个空白页面,其中只有一个@Body。我将其保留为显示其他页面的占位符。 2.第二个页面有控件和@Body,它被加载在第一个空白页面内。 3. 第三个页面应该放在第二个页面的@Body 里面而不破坏它的内容。

无论如何,当我尝试从第二页加载 NavigationManager.NavigateTo( "/page3" ); 时 - 第二页的内容被破坏并替换为 page3 的内容。

  • 如何将竞争加载到辅助页面而不破坏它?!

【问题讨论】:

标签: blazor blazor-client-side asp.net-blazor


【解决方案1】:

您只能在布局组件上使用默认的@Body 空间,继承自LayoutComponentBase。您的第一个空白页肯定会这样做,否则不会显示 page2。但是要在 page2 上使用 @Body 占位符并使用路由导航到 page3,您还需要让 page2 成为布局。 所以你真正需要做的就是让page2也成为一个布局,将它的布局设置为page1,将page3的布局设置为page2。如果你想在某个路由只显示 page2 和空白 @Body 你应该设置这个路由一个完全空白的页面并将它的布局设置为 page2。 比如:

BlankPageLayout.razor

@inherits LayoutComponentBase

@Body

Page2Layout.razor

@inherits LayoutComponentBase
@layout BlankPageLayout

<some html>
    @Body
</some html>

Page2.razor

@page "/page2"
@layout Page2Layout

Page3.razor

@page "/page3"
@layout Page2Layout

<some html></some html>

现在导航到page2,您将只得到一个 Page2Layout,导航到 page3,您将得到一个 Page2Layout,其中包含 page3 内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多