首页 > 解决方案 > 如何通过单击 blazor 中的按钮将数据从 foreach 循环传递到另一个页面

问题描述

我想customer.Id通过单击按钮添加问题从 foreach 循环中的当前客户传递到另一个页面。

<tbody>
    @foreach (var customer in customers)
    {
        <tr>
            <td>@customer.Id / @customer.LastName / @customer.Email</td>
            <RadzenButton Text="Add issue" ButtonStyle="Radzen.ButtonStyle.Secondary" Click="@GoToCustomerIssue"/>
            <RadzenButton Text="Edit" ButtonStyle="Radzen.ButtonStyle.Secondary" />
            <RadzenButton Text="Delete" ButtonStyle="Radzen.ButtonStyle.Secondary" />
        </tr>       
    }
</tbody>

public int GoToCustomerIssue()
{
    NavManager.NavigateTo($"/customerissue/{}")
}

标签: blazor

解决方案


您可以将 lambdas 传递给事件处理程序。所以你的线:

<RadzenButton Text="Add issue" ButtonStyle="Radzen.ButtonStyle.Secondary" Click="@GoToCustomerIssue"/>

可以很容易地修改为 lambda:

<RadzenButton Text="Add issue" ButtonStyle="Radzen.ButtonStyle.Secondary" Click="() => GoToCustomerIssue(customer.Id)" />

这允许您捕获本地上下文 ( customer) 并将您需要的内容传递给您的事件处理程序。显然,您的事件处理程序需要修改以接受该参数:

public int GoToCustomerIssue(int customerId)
{
    NavManager.NavigateTo($"/customerissue/{customerId}")
}

话虽如此,根本不使用事件处理程序可能会更惯用,而只是构建您的 URL 以id直接合并,但我认为不RadzenButton支持该概念。


推荐阅读