c# - Razor Pages - 使用多个提交按钮或多个表单处理分页

标签 c# asp.net-core asp.net-core-mvc

我正在我的网络应用程序中构建一个相对简单的分页。请注意,这严格使用 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/

相关文章:

c# - 变量在循环中保留其值?

c# - 从多页 tiff 中提取帧 - C#

c# - 通过依赖注入(inject)获取连接字符串

c# - 使用 Entity Framework DB 上下文 : Does not reset ID counter 进行单元测试

c# - 使用 EMGU CV C# 中的 HOGDescriptor 获取图像的 HOG 描述符

c# - 只有一个元素的数组到达 Controller

c# - 使用 HttpClient 的 HTTPS 请求失败

c# - 告诉 Swashbuckle 只查找具有 ApiControllerAttribute 的 Controller

asp.net-core - 在 Nano Server 上运行 ASP.NET 5 会抛出 "Unable to load DLL ' kernel3 2'"

c# - 无法通过启用的 UseAuthentication 访问 HomeController 路由