有没有办法在 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 是不是有路由约束?的主要内容,如果未能解决你的问题,请参考以下文章

获取 Blazor 组件中的当前 URL

blazor 服务器端是不是有任何热重载?

如何检查图片是不是存在于url

有没有办法检查字符串是不是是 django 查询集的有效过滤器?

有没有办法让文件流下载到 Blazor 中的浏览器?

Blazor WASM 使用 Cosmos DB 而不是 SQL 来获取身份