如何将 URL 输入参数值传递给 Blazor 页面?

001*_*001 5 c# asp.net asp.net-core blazor

这将一个值传递给一个 blazor 组件

[Parameter]
public string Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是从 URL 输入参数传递一个值呢?

Isa*_*aac 7

在组件内定义并用 Parameter 属性注释的公共属性用于存储从父组件传递给子组件的组件参数,例如,以下代码将字符串参数从父组件传递给其子组件。

父组件.razor

<ChildComponent Title="I'm a child component" />

子组件.razor

<p>@Title</p>

@code{
     Public string Title { get; set; } = "Default Title";
}
Run Code Online (Sandbox Code Playgroud)

或者,存储路由数据的值,例如,路由数据 Start 在 url https://localhost:44396/counter/123 中,这是由框架自动完成的,如果您定义了一个名为 Start 的公共属性,并使用 Parameter 属性对其进行注释:

Counter.razor

    @page "/counter"
@page "/counter/{start:int}"

<h1>Counter</h1>

<p>Current count: @Start</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {

    [Parameter]
    public int Start { get; set; }


    private void IncrementCount()
    {
        Start++;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,Counter 组件的定义包含两个路由模板。第一个路由模板设置为使用 Start 属性的默认值;即值 0。但用户可以通过在 url 中提供路由参数来更改默认值,例如:https://localhost:44396/counter/123。现在当单击按钮时,起始值是 123,而不是 0。只是为了记录,第二个模板包含一个路由约束,它限制应用程序只能使用 int 值。