【问题标题】:Best way for pagination, sorting, filtering an ASP.NET Core MVC that consumes a Web API which uses ADO.NET stored procedures in SQL Server?使用在 SQL Server 中使用 ADO.NET 存储过程的 Web API 的 ASP.NET Core MVC 分页、排序、过滤的最佳方法?
【发布时间】:2021-11-10 01:53:49
【问题描述】:

我有一个 ASP.NET Core 5 Web API,它使用 ADO.Net 使用存储过程与 SQL Server 数据库进行通信。此 API 在同一 Visual Studio 解决方案中的另一个 ASP.NET Core MVC 项目中使用。

对于 MVC 项目,对于从 Web API 项目接收到的显示结果处理分页、排序和过滤功能的最佳和最可靠的方法是什么?

全功能源码:https://github.com/krchome/WebAPICoreMVCClient

问候, 考希克

【问题讨论】:

  • 我已经查看了您的代码并在下面发布了答案。我的回答更笼统。在您的特定情况下,您需要在 API 中编写更多方法来接收 API 控制器中的页面编号、排序键等参数,并将分页和排序的数据发送回客户端。同样在客户端应用程序中,更好的做法是编写一些 javascript(Jquery、React 或 Angular)并直接从 javascript 调用 API,而不是调用控制器和控制器调用 API。例如:c-sharpcorner.com/article/…
  • 感谢您查看代码。但是,发布的文章 URL 没有显示 API 控制器将分页和排序数据发送回客户端,因此本质上对证明这一点没有多大用处。我的项目最初是为了演示一个客户端 MVC 应用程序如何有效地使用 Web API,并且它确实做到了。然而,由于我的社区的需求,他们现在期望这些功能能够锦上添花,我正在朝这个方向思考。您的建议让我考虑对 API 的设计进行重大更改。不能按原样分页、排序客户端吗?
  • 哦,知道了,我发布的 URL 是为了展示我们如何从 Javascript 客户端消费。与您如何在服务器端进行分页/排序无关。当然,您可以在 MVC 应用程序中进行分页和排序,但我建议您在 Web API 中进行排序、分页等,而不是在客户端中进行,这可能非常低效。
  • 好的,我明白了。你能发送一些代码示例来展示在 Web API 上做这些事情的方法吗?也是从 MVC 应用程序发送以获取所需响应的请求格式。我只想从 MVC 调用 API,不想走 Javascript 路径。
  • 只需通过查询参数传递它们。更好的做法是通过查询参数传递分页、排序、过滤器等参数,以便对其进行书签、缓存等。localhost:64798/api/Customer?sort=name

标签: sorting filter pagination asp.net-core-mvc asp.net-core-webapi


【解决方案1】:

当您单独设计一个 API 项目时,您的想法是您将所有逻辑和数据获取活动(如排序、过滤和分页)保留在 API 本身中。这使得 API 独立、干净、快速。 UI 将负责向 API 发送所需的参数,包括页面编号、排序键等,API 将提供正确的数据。您可以从 UI 中使用并显示它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多