【问题标题】:Can you link to a Razor component without hard-coding its URL?您可以链接到 Razor 组件而不对其 URL 进行硬编码吗?
【发布时间】:2020-12-13 17:07:32
【问题描述】:

我正在尝试使用新的 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”的情况下路由到 Sample 页面?甚至使用类似于 nameOf()getType 的函数的普通链接(我已经检查了 aNavLink) ()?

我现在最好的选择是向基础添加一个 URL 属性,但似乎我不应该输入两次“/sample”。 (这并不难,这是事情的原理!)

我还看到了一些人注入 NavigationManager 然后使用它来推断 URL 的示例,但是对于每个页面也必须重复此操作。我见过一些从 RouteData.Values 获取页面指令的示例,但那些是 Razor 页面。我不知道如何创建 RouteData 对象或将其用作静态类。

【问题讨论】:

    标签: c# asp.net-mvc blazor webassembly blazor-webassembly


    【解决方案1】:

    您可以使用类 RouteAttribute 来查找路线。 它看起来像这样:

    [Microsoft.AspNetCore.Components.RouteAttribute("/counter")]
    public partial class Counter : Microsoft.AspNetCore.Components.ComponentBase
    

    How do I read an attribute on a class at runtime?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2021-09-12
      • 2015-09-13
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多