blazor - 如何通过单击 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/{}")
}
解决方案
您可以将 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
支持该概念。
推荐阅读
- android - 从 Recyclerview 删除多个项目后,NULL 指针异常错误应用程序崩溃
- javascript - 如何为我的计算器添加本地存储?
- javascript - 代码覆盖率不起作用的玩笑手表
- javascript - 带有 SNS 消息的 Java 脚本中的 For 循环
- sql - 加入两个表并正确分组结果
- javascript - Angular Material Table:如何在按钮单击时传递/提交选定的行?
- assembly - 比较两个整数并尝试在 0x00400058 处执行非指令
- google-apps-script - 在特定文件夹中创建文件
- node.js - Node.Js 从 SQL Server 检索特定数据并将其编码为 JSON 数组
- node.js - readFileSync 在给出动态文件名时不返回缓冲区,但在给出静态文件名时给出结果