c# - 您可以链接到 Razor 组件而不对其 URL 进行硬编码吗?
问题描述
我正在尝试使用新的 Blazor WASM 创建一个 github pages 网站。我几乎每天都在工作中使用 C#,但我以前从未使用过 Blazor/Razor/ASP.NET,所以我很可能尝试使用在此处不起作用的服务器端技术。
我有一组页面,我想在主页上显示每个页面的小预览,并带有指向该页面的链接。所有这些页面都实现了相同的组件基类。例如,Sample.razor可能看起来像
@page "/sample"
@inherits GroupBase
<!-- html here -->
@code {
public override string Name { get; } = "Sample";
}
Index.razor可能看起来像
@page "/"
@foreach (GroupBase p in mPagesToPreview)
{
<a href=" ">@p.Name</a>
}
@code {
List<GroupBase> mPagesToPreview = new List<GroupBase> { new Sample() };
}
有没有办法在不明确输入“/sample”的情况下路由到示例页面?或者甚至使用类似于nameOf()或getType()的功能的普通链接(我已经检查了a和NavLink ) ?
我现在最好的选择是向基础添加一个URL属性,但似乎我不应该输入两次“/sample”。(这并不难;这是事情的原理!)
我还看到了一些人注入NavigationManager然后使用它来推断 URL 的示例,但是对于每个页面也必须重复此操作。我看过一些从RouteData.Values获取页面指令的示例,但这些是 Razor 页面。我不知道如何创建RouteData对象或将其用作静态类。
解决方案
您可以使用类 RouteAttribute 来查找路线。它看起来像这样:
[Microsoft.AspNetCore.Components.RouteAttribute("/counter")]
public partial class Counter : Microsoft.AspNetCore.Components.ComponentBase
推荐阅读
- python - 处理 softmax 函数输出的值
- javascript - A-frame / 其他 js lib,改变 VR 眼睛角度或眼睛摄像头位置
- javascript - 在reducer react native中重置颜色值
- python - 如何在多处理中将一个管理器变量和另一个变量传递给目标函数?
- ios - 为什么我在尝试为我的 UITableView 获取 UILabel 时不断收到“致命错误”?
- html - 当焦点不在输入字段上时如何禁用 Ctrl+A 选择输入字段的文本
- javascript - 当我使用 innerHTML 时,文本输入显示 Nan
- netsuite - Netsuite - 根据项目子列表的内容过滤掉整个事务
- linux - 将特定字符串附加到输出文件的每一行的开头,同时将命令的结果流式传输到同一文件
- javascript - 从光标中心画一个正方形