有没有办法在 Blazor 中检查 url 是不是有路由约束?
Posted
技术标签:
【中文标题】有没有办法在 Blazor 中检查 url 是不是有路由约束?【英文标题】:Is there a way to check if a url has route constraint in Blazor?有没有办法在 Blazor 中检查 url 是否有路由约束? 【发布时间】:2021-10-01 06:06:05 【问题描述】:我有一个带有路由约束@page "/users/userId:int"
的页面
我还有一个页面@page "/users/"
我想知道要路由到哪个 url,然后根据它执行操作。
我正在考虑是否应该找到一种方法来检查 url 是否具有路由约束(甚至获取约束及其类型),我的问题将得到解决。
更多信息
我正在导航菜单页面上检查此内容,以便知道将哪个菜单项设置为活动
【问题讨论】:
您要在哪里执行此测试?为什么? 我有一个导航菜单页面,我需要在其中进行检查,以便知道要保留哪个菜单项 不应该只是某种if (userId.HasValue) <a asp-route-userId="@userId" .... else ...
Router(通常在App组件中)有routedata,可以级联使用。该 routedata 具有可能有用的属性。我不确定您所说的“要保留哪个菜单项”是什么意思 - 所以不确定这是否会有所帮助
纯粹从 UI 角度来看? IE。将用户菜单显示为活动状态?
【参考方案1】:
在这种情况下,如果您调用用户页面,那么@page "/users/" 如果您使用参数调用用户而不是 @page "users/userid:int" 将调用此页面 这取决于你在叫什么
【讨论】:
我想在通话后以编程方式检查。【参考方案2】:您可以像这样在生命周期事件中检查它:
[Parameter]
public int? userId get; set;
protected override void OnParametersSet()
if (userId is not null)
// Perform action when user id is present
请注意,OnParametersSet 也有异步版本。
【讨论】:
以上是关于有没有办法在 Blazor 中检查 url 是不是有路由约束?的主要内容,如果未能解决你的问题,请参考以下文章