问题描述
我正在尝试使用新的Blazor WASM创建一个github页面网站。我几乎每天都在使用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”的情况下路由到 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