ASP.NET MVC-懒加载-逐步加载数据库信息

devtools/2024/10/11 12:32:32/

环境:
win10, .NET 6.0


目录

  • 问题描述
  • 解决方案
    • 基础版
      • 数据库查询部分(Entity Framework)
      • 控制器
      • 前端页面
    • 加载到表格版

问题描述

假设我数据库中有N个表,当我打开某页面时,每个表都先加载一部分(比如20条),点击表下某个按钮,再加载下一部分,如此循环直至加载完毕。

解决方案

基础版

数据库查询部分(Entity Framework)

  1. BasicPartsDbContext.cs
using System.Data.Entity;namespace WebApplication1.Models
{public class BasicPartsDbContext:DbContext{public BasicPartsDbContext() : base("name=conn1") { }public DbSet<BasicParts> BasicParts { get; set; }}
}

其中BasicParts是我的实体/模型类,数据类型与数据库中某个表一一对应,内容大概如下:

using System.ComponentModel.DataAnnotations.Schema;namespace WebApplication1.Models
{[Table("dbo.表名")]public class BasicParts{// 对应列}
}

"name=conn1"是指使用此数据库配置。该配置在项目根目录下的Web.config中:
在这里插入图片描述
2. BasicPartsRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace WebApplication1.Models
{public class BasicPartsRepository{private BasicPartsDbContext _context;public BasicPartsRepository(BasicPartsDbContext context){_context = context;}public List<BasicParts> GetPagedData(int pageIndex, int pageSize) {return _context.BasicParts.OrderBy(i => i.id).Skip(pageIndex * pageSize).Take(pageSize).ToList();}}
}

控制器

public class HomeController : Controller {private BasicPartsRepository _basicPartsRepository;...public ActionResult BasicPartsView() { return View();}[HttpGet]public JsonResult LoadMoreBasicParts(int pageIndex, int pageSize) {var data = _basicPartsRepository.GetPagedData(pageIndex, pageSize);return Json(data, JsonRequestBehavior.AllowGet);}...
}

前端页面

<!DOCTYPE html>
<html>
<head><title>Load More Data Example</title><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body><div id="data-container"><!-- 这里将显示从服务器加载的数据 --></div><button id="load-more">加载更多</button><script>var pageIndex = 0;var pageSize = 20;function loadMoreData() {$.ajax({url: '/Home/LoadMoreBasicParts',data: {pageIndex: pageIndex,pageSize: pageSize},success: function (data) {pageIndex++;// 将新加载的数据追加到页面上data.forEach(function (item) {$('#data-container').append('<p>' + item.name + '</p>');});}});}$(document).ready(function () {$('#load-more').on('click', function () {loadMoreData();});// 页面加载完成时,加载初始数据loadMoreData();});</script>
</body>
</html>

加载到表格版

其他部分保持不变,只修改前端:

<!DOCTYPE html>
<html>
<head><title>Load More Data into Table</title><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body><table id="data-table" border="1"><thead><tr><th>No.</th><th>名称</th><th>序列</th><th>描述</th><th>类型</th></tr></thead><tbody><!-- 这里是数据行 --></tbody></table><button id="load-more">加载更多</button><script>var pageIndex = 0;var pageSize = 20;function loadMoreData() {$.ajax({url: '/Home/LoadMoreBasicParts',data: {pageIndex: pageIndex,pageSize: pageSize},success: function (data) {pageIndex++;// 将新加载的数据追加到表格中data.forEach(function (item) {$('#data-table tbody').append('<tr>' +'<td>' + item.id + '</td>' +'<td>' + item.name + '</td>' +'<td>' + item.seq + '</td>' +'<td>' + item.info + '</td>' +'<td>' + item.stype + '</td>' +'</tr>');});}});}$(document).ready(function () {$('#load-more').on('click', function () {loadMoreData();});// 页面加载完成时,加载初始数据loadMoreData();});</script>
</body>
</html>

http://www.ppmy.cn/devtools/123663.html

相关文章

【Arduino IDE安装】Arduino IDE的简介和安装详情

目录 &#x1f31e;1. Arduino IDE概述 &#x1f31e;2. Arduino IDE安装详情 &#x1f30d;2.1 获取安装包 &#x1f30d;2.2 安装详情 &#x1f30d;2.3 配置中文 &#x1f30d;2.4 其他配置 &#x1f31e;1. Arduino IDE概述 Arduino IDE&#xff08;Integrated Deve…

CNN+Transformer解说

CNN&#xff08;卷积神经网络&#xff09;和Transformer是两种在深度学习领域广泛使用的模型架构&#xff0c;它们在处理不同类型的数据和任务时各有优势。 CNN擅长捕捉局部特征和空间层次结构&#xff0c;而Transformer擅长处理序列数据和长距离依赖关系。 将CNN与Transform…

mysql学习教程,从入门到精通,SQL HAVING 子句(32)

1、SQL HAVING 子句 当然&#xff01;HAVING 子句在 SQL 中用于对分组后的结果进行过滤。它通常与 GROUP BY 子句一起使用&#xff0c;以便对聚合函数&#xff08;如 SUM(), COUNT(), AVG(), MAX(), MIN() 等&#xff09;的结果进行条件筛选。 以下是一个示例&#xff0c;假设…

Git分支-团队协作以及GitHub操作

Git分支操作 在版本控制过程中&#xff0c;同时推进多个任务> 程序员开发与开发主线并行&#xff0c;互不影响 分支底层也是指针的引用 hot-fix:相当于若在进行分支合并后程序出现了bug和卡顿等现象&#xff0c;通过热补丁来进行程序的更新&#xff0c;确保程序正常运行 常…

基于补全学习的时空数据自适应模型演化系统ComS2T

人工智能咨询培训老师叶梓 转载标明出处 时空学习模型通过融合多种空间卷积和时间演化技术&#xff0c;有效捕捉城市数据的复杂异质性。然而&#xff0c;快速的城市化进程导致城市数据分布和结构频繁变动&#xff0c;这与现有模型假设训练和测试数据独立同分布的情况相悖。现实…

vue3的v-model使用

vue3的v-model使用 单个绑定值 子组件 props: [‘modelValue’], emits: [‘update:modelValue’], 注&#xff1a;modelValue是默认的&#xff0c;如果只有一个需要绑定v-model&#xff0c;可使用modelValue 此时父组件写法 <CustomInput v-model"searchText"…

逼近理论及应用精解【10】

文章目录 ANNRNN一、定义二、数学原理与公式三、计算过程四、定理五、架构六、例子七、例题 RNN&#xff08;循环神经网络&#xff09;的计算公式一、隐藏状态的更新公式二、输出的计算公式三、总结 RNN&#xff08;循环神经网络&#xff09;计算公式的推导过程一、基本假设与定…

【原创】Android Studio 中安装大模型辅助编码插件:通义灵码

在 Android Studio 中内置了 Ginimi 预览版&#xff0c;但需要“加速器”才可使用。 在国内有平替的软件同样可以使用&#xff0c;比如 阿里的通义灵码&#xff0c;智谱的CodeGeeX等&#xff0c;从功能和使用上来说都是大同小异。 这里我们以通义灵码为例来讲解其安装和使用 通…