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

如何通过单击blazor中的按钮将数据从foreach循环传递到另一个页面,blazor,Blazor,我想通过单击“添加问题”按钮,将foreach循环中的当前客户的customer.Id传递到另一个页面 <tbody> @foreach (var customer in customers) { <tr> <td>@customer.Id / @customer.LastName / @customer.Email</td> <RadzenButton Text

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

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


您可以将lambda传递给事件处理程序。所以你的台词是:

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

尽管如此,完全不使用事件处理程序可能更为惯用,只需构造URL以直接包含
id
,但我认为
RadzenButton
不支持这一概念。

您可以使用布尔值来显示customerissue逻辑,而不是导航

此页面

<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(customer)"/>
            <RadzenButton Text="Edit" ButtonStyle="Radzen.ButtonStyle.Secondary" />
            <RadzenButton Text="Delete" ButtonStyle="Radzen.ButtonStyle.Secondary" />
        </tr>       
    }
</tbody>
@if (SelectedCustomer is not null){
     <CustomerIssue Customer=SelectedCustomer />
}

@code {
    List<customer> customers {get; set;} // or whatever your customer class is called
    customer SelectedCustomer {get; set;}

    GoToCustomerIssue(customer clickedCustomer){
      SelectedCustomer = clickedCustomer;
    }
}

这样,您就可以访问整个客户类(ID、LastName、Email等),而不仅仅是ID,并且不必导航到新页面。别担心,在您选择客户之前,浏览器甚至不会开始加载customerissue页面。

您确定要导航而不是使用组件吗?我很少需要实际导航到新页面。我需要一个新页面来创建评论并显示问题的评论列表。如果要解决此问题,您认为如何?
<RadzenButton Text="Add issue" ButtonStyle="Radzen.ButtonStyle.Secondary" Click="() => GoToCustomerIssue(customer.Id)" />
public int GoToCustomerIssue(int customerId)
{
    NavManager.NavigateTo($"/customerissue/{customerId}")
}
<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(customer)"/>
            <RadzenButton Text="Edit" ButtonStyle="Radzen.ButtonStyle.Secondary" />
            <RadzenButton Text="Delete" ButtonStyle="Radzen.ButtonStyle.Secondary" />
        </tr>       
    }
</tbody>
@if (SelectedCustomer is not null){
     <CustomerIssue Customer=SelectedCustomer />
}

@code {
    List<customer> customers {get; set;} // or whatever your customer class is called
    customer SelectedCustomer {get; set;}

    GoToCustomerIssue(customer clickedCustomer){
      SelectedCustomer = clickedCustomer;
    }
}
@code{
    [Parameter]
    public customer Customer {get; set;}
}