【问题标题】:LinkGenerator returns nullLinkGenerator 返回 null
【发布时间】:2021-03-24 08:25:47
【问题描述】:

我使用以下指令定义了一个 Blazor 页面:

@page "section/{name}/details"

我正在尝试使用LinkGenerator从另一个页面生成指向它的链接:

var absoluteUri = this.LinkGenerator.GetUriByPage(this.HttpContextAccessor.HttpContext, "/section/{name}/details", values: new { name = "mysection" });

无论如何,absoluteUri 总是 null。 我错过了什么?

【问题讨论】:

    标签: c# asp.net-core blazor blazor-server-side


    【解决方案1】:

    LinkGenerator 用于为 服务器端 端点路由生成 URL。它能够生成到端点路由机制已知的端点的链接,例如 MVC 操作、Razor 页面或命名路由。

    Blazor 页面 虽然是客户端路由机制的一部分(是的,即使使用服务器端 Blazor),因此它们不参与服务器端路由机制。这就是为什么我不相信 LinkGenerator 可以为客户端路由生成 URL。

    不幸的是,我不知道使用 Blazor 路由的替代方案。所以我认为你必须手动生成 URL,或者构建你自己的工具来生成链接。由于您使用的是服务器端 Blazor,因此您可以访问 HttpContext,因此您可以使用它来生成绝对 URL。这样的事情可能会起作用:

    @inject IHttpContextAccessor httpContextAccessor
    
    …
    
    @code {
        string GetUrl(string sectionName)
        {
            var request = httpContextAccessor.HttpContext.Request;
            return request.Scheme + "://" + request.Host + request.PathBase + $"section/{sectionName}/details";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      相关资源
      最近更新 更多