C# 使用Blazor绑定的动态方法参数

C# 使用Blazor绑定的动态方法参数,c#,blazor,blazor-server-side,C#,Blazor,Blazor Server Side,我正试图使用Blazor制作一个分页组件。导航第一个,最后一个,上一个和下一个已经开始工作。问题是:我希望用户能够单击页码,并通过传递页码执行NavigateToPage操作 以下是我的尝试: 派美雅 先前的 @对于(int i=1;i@i } 西吉恩特 阿尔蒂玛 NavigateToPage除页码外,但当前代码始终为所有链接发送相同的值,对应于i的最后一个值。如果有4个页面,则无论单击哪个链接,5都是参数 知道如何获取不同的参数值吗?for循环应该包含如下局部变量: @

我正试图使用Blazor制作一个分页组件。导航
第一个
最后一个
上一个
下一个
已经开始工作。问题是:我希望用户能够单击页码,并通过传递页码执行NavigateToPage操作

以下是我的尝试:


  • 派美雅
  • 先前的
  • @对于(int i=1;i@i }
  • 西吉恩特
  • 阿尔蒂玛
NavigateToPage
除页码外,但当前代码始终为所有链接发送相同的值,对应于
i
的最后一个值。如果有4个页面,则无论单击哪个链接,5都是参数


知道如何获取不同的参数值吗?

for循环应该包含如下局部变量:

@for (int i = 1; i <= TotalPaginas; i++)
            {
                var local = i;
                var clasePaginacionPaginaActual = (PaginaActual == local) ? "disabled" : "";
                <li class="page-item @clasePaginacionPaginaActual"><a class="page-link" @onclick="@(() => NavigateToPage(local))">@i</a></li>
            }
@for(int i=1;i@i)
}

这是标准的C#行为,其中lambda表达式@(()=>NavigateToPage(local))可以访问变量,而不能访问变量的值。必须定义for循环的本地变量,否则lambda表达式将始终调用NavigateToPage(i)我在循环的末尾是5。

对Blazor不是非常熟悉,所以我对此不完全确定,因此只将其作为注释。对于表达式函数,您需要关闭延迟的变量。因此,您可能需要关闭
i
内部的
for
循环。也许,
intpageValue=i;
然后
@onclick=“(()=>NavigateToPage(pageValue))”>
将起作用。这是正确的。这不是Blazor问题…完全忘记了本地范围!谢谢