从 Blazor 3.1 Preview 2 开始,应该可以防止默认导航行为 https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-1-preview-2/对于 Blazor 中的链接,也这个答案中讨论过 https://stackoverflow.com/a/59616455/1879019.
然而,这段代码:
<NavLink href="" Match="Match" @onclick:preventDefault @onclick="()=>LinkAction()" >
Do something
</NavLink>
给出这个错误:
为此,组件参数“onclick”使用两次或多次
成分。参数必须唯一(不区分大小写)
这是为什么?
虽然 HTML 的最终结果<A>
标签和 BlazorNavLink
组件大致相同,@onclick:preventDefault
语法仅适用于 HTML 版本,不适用于 Blazor 组件。
史蒂夫·桑德森在这里解释一下 https://github.com/dotnet/aspnetcore/issues/18460#issuecomment-577175682:
恐怕没有一个可以任意穿越的机制
指令属性,例如 @*:preventDefault 作为组件
参数,因此预计这不适用于 NavLink。
Steve还给出了一个可能的解决方案:
但是,您可以从 NavLink 继承您自己的子类,该子类添加
“防止默认”行为。例如,创建
NavLinkPreventDefault.razor,包含以下内容:
@inherits NavLink
<a @attributes="@AdditionalAttributes" class="@CssClass" @onclick:preventDefault>
@ChildContent
</a>
现在您可以使用而不是获取
你想要的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)