【问题标题】:How can I get the page layout to stop disappearing momentarily when accessing a non-existent page in Blazor?在 Blazor 中访问不存在的页面时,如何让页面布局暂时停止消失?
【发布时间】:2021-06-03 10:29:16
【问题描述】:

我设置了一个页面,当用户输入与我的 Blazor 项目中的页面不对应的 URL 时显示该页面。内容在 App.razor 中定义:

            <NotFound>
            <LayoutView Layout="@typeof(MainLayout)">
                <p>There is nothing at this address.</p>
                <img src="/images/broken_wine_glass.jpg" />
            </LayoutView>
        </NotFound>

问题在于,当用户单击将他们带到无效地址的链接时,整个布局会消失片刻,然后返回“此地址无内容”内容。有没有办法在布局中的菜单不消失的情况下重定向到此页面?

【问题讨论】:

  • 当您说“用户输入的 URL 不是...”时,您的意思是在浏览器 URL 栏中输入 URL,还是在应用程序中的某些控件中输入 URL。在浏览器栏中输入的任何 URL 都是一个硬 http 获取(除非您编写代码来停止它),并将“重新启动”SPA,这解释了“暂时消失”。 Blazor 服务器?在 Blazor WASM 中,这不仅仅是一个“时刻”。
  • 答案很简单:迁移到服务器端 Blazor。您所看到的是网络的工作方式。这是自然的,或者至少是不可避免的。只需显示一条消息,例如:学习打字或不太礼貌的内容。
  • 所有布局会消失一会,这是正常现象。是不是因为期间渲染停留的时间过长?
  • @MichaelKossin 嗨,很高兴提出问题,但您确实需要回复???或者,如果您找到答案,请关闭它。
  • @ShaunCurtis,如果用户通过单击应用程序中的链接访问不存在的页面,也会发生这种情况。

标签: .net-core blazor webassembly


【解决方案1】:

我认为这是 Blazor 尝试寻找匹配路由的原因。

首先,它会检查本地路由表中处理路由的组件。如果失败,它将重定向到服务器并查看服务器是否有匹配的路由。如果失败,则重新加载 Blazor 应用并呈现路由器上未找到的模板。

您所描述的闪烁是在上述过程中重新加载应用时发生的。

【讨论】:

  • 很高兴知道为什么会发生这种情况。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2019-12-31
  • 1970-01-01
  • 2020-04-18
  • 2021-02-04
  • 2021-12-25
  • 2013-02-11
相关资源
最近更新 更多