循环内的 Blazor 导航?
Posted
技术标签:
【中文标题】循环内的 Blazor 导航?【英文标题】:Blazor navigation from within a loop? 【发布时间】:2021-09-11 05:49:29 【问题描述】:所以我正在尝试制作一个显示客户数据的 Blazor 应用程序。当显示所有客户时,我希望能够导航到单个客户。我无法完成这项工作。主要概念在下面的代码中,我也有预期的模型。
@for(int i = 0; i < customers.Length-1; i++)
<tr>
<td>@customer.Id</td>
<td>@customer.CustomerId</td>
<td>@customer.LastName</td>
<td>@customer.FirstName</td>
<td>@customer.Name1056Form</td>
<td>@customer.TrapezeClientId</td>
<td>@customer.CustomerNote</td>
<td @onclick="NavToCustomer(i)"> Details</td>
</tr>
private void NavToCustomer(int i)
int Id = i;
navigation.NavigateTo("/Customer/" + Id);
【问题讨论】:
I am having trouble making this work.
- 你能详细说明一下吗?什么不工作?
您好,我收到“无法从 'void' 转换为 'Microsfot.AspNetCore.Components.EventCallBack'”错误。
这能回答你的问题吗? C# Blazor WebAssembly: Argument 2: cannot convert from 'void' to 'Microsoft.AspNetCore.Components.EventCallback'
【参考方案1】:
<td @onclick="()=>NavToCustomer(@customer.Id)"> Details</td>
private void NavToCustomer(int custID)
navigation.NavigateTo("/Customer/" + custID);
解释:原版@onclick sends
有自己的参数(您可以通过将鼠标悬停在标记中的“@onclick”上来查看它们是什么)。您的事件处理程序不处理 MouseEventArgs
,因此签名不匹配。您想发送自定义信息,因此您应该使用 lambda 表达式。
--编辑--
再想一想,你可以直接这样做吗?
<td @onclick="()=>navigation.NavigateTo("/Customer/" + customer.Id)"> Details</td>
【讨论】:
以上是关于循环内的 Blazor 导航?的主要内容,如果未能解决你的问题,请参考以下文章
Blazor University (27)路由 —— 检测导航事件
Blazor University (26)路由 —— 通过代码导航
使用 Blazor 开发内部后台:基于Card组件快速搭建导航首页
Blazor University (25)路由 —— 通过 HTML 导航