C# 使用Blazor绑定的动态方法参数
我正试图使用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循环应该包含如下局部变量: @
第一个
,最后一个
,上一个
和下一个
已经开始工作。问题是:我希望用户能够单击页码,并通过传递页码执行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问题…完全忘记了本地范围!谢谢