链接生成器 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";
}
}
我使用以下指令定义了一个 Blazor 页面:
@page "section/{name}/details"
我正在尝试使用 LinkGenerator
:
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";
}
}