无法将路由添加到 Blazor 服务器端
Posted
技术标签:
【中文标题】无法将路由添加到 Blazor 服务器端【英文标题】:Can't add Route to Blazor Server Side 【发布时间】:2021-07-01 12:55:03 【问题描述】:我会尝试通过以下方式注册路由
services.AddRazorPages(options => options.Conventions.AddPageRoute("/counter", "/c"));
在ConfigureServices
.
我不能只添加@page "/c"
,因为我打算从配置文件中提取这些地址。
但是,当我尝试访问.../c
时,它说找不到该页面,.../counter
有效。可能是什么问题?
【问题讨论】:
Counter.razor 文件中提到@page
的内容是什么?
@viveknuna @page "/counter"
,我使用默认的 blazor 项目来重现这个。
那你为什么期望它与.../c
一起工作?
因为我添加了一个 PageRoute,它应该从 c
重定向到 counter
。 docs.microsoft.com/en-us/aspnet/core/razor-pages/… 还是我误会了?
到底要不要动态生成资源?例如生成一个语音室,然后提供一个链接?你可能想看看this
【参考方案1】:
你可能有充分的理由诉诸AddPageRoute
,但你没有说,所以你为什么不这样做:
@page "/counter"
@page "/c"
@page "/co"
@page "/cou"
<h1>Counter</h1>
与 Razor 不同,Blazor 采用多个 @page
指令。
【讨论】:
是的,这可以解决,但我打算从配置文件中提取这些地址,所以我不能静态设置它们。我还编辑了问题文本以包含此信息【参考方案2】:RazorPages != Blazor。
您的路线不适用于 Blazor 页面。
当原始模板代码中有.AddRazorPages()
时,那是来自使用个人帐户。您可以通过这种方式为登录、注销和帐户页面添加路由。不适用于 /Counter。
【讨论】:
【参考方案3】:我想从配置文件中加载地址并从这个地址重定向到静态页面
我为你做了一个演示:
@page "/"
@inject NavigationManager NavigationManager
@inject Microsoft.Extensions.Configuration.IConfiguration config
<button class="btn-primary" @onclick="RedirectTo">Go</button>
@code
void RedirectTo()
var address = @config["address"];
NavigationManager.NavigateTo(address);
//Use this if you want to redirect immediately without some trigger event
protected override void OnInitialized()
var address = @config["address"]; //get address from config file
NavigationManager.NavigateTo(address); //redirect
以 appsettings.json 中的地址配置为例:
"address": "/counter",
"Logging":...,
"AllowedHosts": "*"
【讨论】:
好的,但这仍然没有多大意义。你的例子有效。我假设您想更改@page
指令以包含来自配置的一些数据,但是如何?在您的示例中,您只是导航到计数器。以上是关于无法将路由添加到 Blazor 服务器端的主要内容,如果未能解决你的问题,请参考以下文章
如何向服务器端 Blazor 项目添加控制器(而非视图)支持
如何通过 IdentityServer4 将 OpenId Connect 添加到 ASP.NET Core 服务器端 Blazor Web 应用程序?
添加第二个 EF 核心数据库后 Blazor 服务器端 docker 容器分段错误