我正在我的网络应用程序中构建一个相对简单的分页。请注意,这严格使用 asp.net core,我会将其重建为 SPA。
我已经实现了分页,但对两件事感到困惑:
- 多个提交按钮的工作方式
- 正确的方法(即我应该使用多按钮选项或表单还是完全改变我的方法)
多个提交按钮
<form method="post">
<input type="number" asp-for="PageSize" />
@if (Model.pageParameters?.PreviousPageLink != null)
{
<button type="submit" asp-page-handler="" asp-route-pageNum="@(Model.pageParameters.CurrentPage - 1)" class="btn btn-default">Previous</button>
}
@for (var i = 1; i <= Model.pageParameters?.TotalPages; i++)
{
<button type="submit" asp-route-pageNum="@i" class="btn btn-default">@i</button>
}
@if (Model.pageParameters?.NextPageLink != null)
{
<button type="submit" asp-route-pageNum="@(Model.pageParameters.CurrentPage + 1)" class="btn btn-default">Next</button>
}
</form>
在查看 https://learn.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-2.2&tabs=visual-studio#write-a-basic-form 上的一些分页示例后,我发现了上述方法.多个提交按钮与单独的 asp-route-{value}
一起使用,而不是多个表单。属性。
我不知道这可以用在按钮上。我认为这更多的是用于链接标签并确保传递正确的数据。然而,上述方法在按如下方式转换按钮时起作用:
<button type="submit" class="btn btn-default" formaction="/MeetingMinutes/1">1</button>
如何使用 asp-route-{value}
进行转换?属性?我知道该表单默认会回发到同一页面,因为没有指定任何操作。 但是如何生成 formaction 属性以使其正常工作?
多表单方法
它与上面的方法基本相同,但使用了多种形式:
@for (var i = 1; i <= Model.pageParameters?.TotalPages; i++)
{
<form method="post">
<button type="submit" class="btn btn-default">@i</button>
<input type="hidden" asp-for="PageNum" value="@i" />
<input type="number" asp-for="PageSize" />
</form>
}
我不太喜欢这种方法,因为它使用多种形式,这可能会增加生成的 HTML 数量。但想检查一下这是否是一种完全错误的方法,或者它是否有其目的。
注意: 我没有使用 anchor 标记生成分页链接的唯一原因是我希望用户能够控制返回值的数量。因此 <input type="number" asp-for="PageSize" />
的原因(我很可能会将其更改为选择列表)。如果可以通过(类似 value="@Userenteredvalueforfield"
的方式)处理获取用户输入,我会将所有内容更改为 anchor 标记。
最佳答案
转换是通过使用 asp-route Tag Helper 属性发生的:Tag Helpers in forms in ASP.NET Core
关于c# - Razor Pages - 使用多个提交按钮或多个表单处理分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784247/