我可以阻止Blazor的导航吗



在Blazor Server Side应用程序中,是否涉及一些执行实际导航的javascript,例如当用户单击链接时?我指的是类似window.history.pushState(..)的东西。

在某些情况下(当页面上有未保存的更改等(,理论上是否可以覆盖该javascript以阻止导航?

由于.NET 7,Microsoft.AspNetCore.Components.Routing命名空间中存在NavigationLock。(https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.routing.navigationlock?view=aspnetcore-7.0(

该组件将使您能够对内部路由事件(对路由组件(和外部事件(例如,有人在地址栏中键入www.google.com(做出反应。

此处提供更多信息和示例:https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-7.0

没有任何内置内容。您可以在窗口上使用onbeforenload,但这一切都取决于您(或nuget库(来编码,而且现在它是不可配置的,所以您只得到标准提示。

在我看来,当有未保存的数据时,不呈现任何导航链接会更容易——当然,除了留下一种取消编辑的方法。

正如Magoo先生上面所说,没有现成的解决方案。

我已经开发了一套控件,我现在可以用来做我相信你想做的事情。我的个人GutHub网站上有三篇文章,一个可以获取代码的repo,以及一个Azure演示网站。欢迎使用回购协议上的代码。

您可以在此处查看正在运行的解决方案https://cec-blazor-database.azurewebsites.net//inlinedialogeditor.

参见:

  1. 编辑状态控制以管理表单的状态,即清洁或脏

  2. 用于管理验证的验证状态控制。您可以使用任何符合标准Blazor Form原则的验证——我刚刚在演示中使用了它。

  3. 内联对话框锁定所有不在编辑表单中的链接/按钮。

您也可以使用模态对话框来托管您的编辑表单-这里有一篇关于它的文章:

模态编辑器-请注意,本文将在接下来的几天内更新。

相关内容

  • 没有找到相关文章

最新更新