链接生成器 returns 空

LinkGenerator returns null

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

@page "section/{name}/details"

我正在尝试使用 LinkGenerator:

从另一个页面生成一个 link
var absoluteUri = this.LinkGenerator.GetUriByPage(this.HttpContextAccessor.HttpContext, "/section/{name}/details", values: new { name = "mysection" });

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

LinkGenerator 用于为 服务器端 端点路由生成 URLs。它能够为端点路由机制已知的端点生成 links,即 MVC 操作、Razor 页面或命名路由等。

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

遗憾的是,我不知道使用 Blazor 路由的替代方案。所以我认为您必须手动生成 URL,或者构建您自己的工具来生成 link。由于您使用的是服务器端 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";
    }
}