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

Posted

技术标签:

【中文标题】如何将 URL 输入参数值传递给 Blazor 页面?【英文标题】:How to pass a URL input parameter value to Blazor page? 【发布时间】:2020-04-05 12:38:27 【问题描述】:

这会将值传递给 blazor 组件

[Parameter]
public string Id  get; set; 

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

【问题讨论】:

添加@page "/path/to/page/id:string" ? dev.to/bradwellsb/… 尝试等待 Http.PutJsonAsync($"/path/to/page/Id, value); 【参考方案1】:

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

ParentComponent.razor

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

ChildComponent.razor

<p>@Title</p>

@code
     Public string Title  get; set;  = "Default Title";

或者,存储路由数据的值,例如,路由数据 Start 位于 url https://localhost:44396/counter/123 中,如果您定义了一个名为 Start 的公共属性,并使用参数属性:

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++;
    

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

【讨论】:

【参考方案2】:

在文档中:components routing

【讨论】:

路由在 mainlayout 中不起作用? :) 仅在 razor 组件中! @001 - 如果这是问题所在,那么您需要提出一个更好的问题。

以上是关于如何将 URL 输入参数值传递给 Blazor 页面?的主要内容,如果未能解决你的问题,请参考以下文章

传递给 onclick 函数的 blazor 变量参数 [重复]

如何给url传递动态参数值?

如何在一页上选择产品数量并将值传递给 cart.php

如何将参数值传递给 a4j:jsFunction

Blazor University 组件 — 级联值

如何将表单输入值传递给 JavaScript 函数