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

server/2024/10/19 7:35:43/

环境:
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/server/131142.html

相关文章

“黑户”也能贷?不看查询,不看负债,就能下款,该不该信?

最近可真是热闹非凡&#xff0c;离过年还早&#xff0c;我这儿就被“黑户”问题给围得水泄不通了。粉丝们一上来就是&#xff1a;“我征信黑了&#xff0c;查询记录一堆&#xff0c;还能给我想想办法不&#xff1f;”问得那是叫一个急&#xff0c;有的连征信报告都没准备&#…

前端脚手架插件安装总结(axios,element-ui,bootstrap,echarts等)

1.打开前端项目终端 输入命令 vue ui 进入图形化界面 a.选择插件 b.选择添加插件 c.安装插件 d.完成安装

【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5

【深度学习】经典的深度学习模型-01 开山之作&#xff1a;CNN卷积神经网络LeNet-5 Note: 草稿状态&#xff0c;持续更新中&#xff0c;如果有感兴趣&#xff0c;欢迎关注。。。 0. 论文信息 article{lecun1998gradient, title{Gradient-based learning applied to document r…

已经30岁了,想转行从头开始现实吗?什么样的工作算好工作?

我是29岁那年&#xff0c;完成从转行裸辞副业的职业转型。 如果你把职业生涯看成是从现在开始30岁&#xff0c;到你退休那年&#xff0c;中间这么漫长的30年&#xff0c;那么30岁转行完全来得及&#xff1b; 如果你觉得必须在什么年纪&#xff0c;什么时间内必须完成赚到几十…

Facebook减肥产品广告投放攻略

有不少刚开始投放facebook广告的小伙伴会感到疑惑&#xff0c;为什么别人的减肥产品跑的风生水起&#xff0c;销量羡煞旁人&#xff0c;自己的广告要不就是被拒要不就是没有流量&#xff0c;甚至还可能被封号&#xff0c;如果你也有这样的困扰&#xff0c;那一定要看完这篇文章…

开局一个登录框,密码重置全靠翻

一、开局获取登录框 挑选一个目标&#xff0c;直接来到它的统一信息门户 可以看到&#xff0c;框里直接提示默认用户名和密码&#xff0c;这不得来全部费功夫&#xff0c;只要找到个学号和身份证就能进到里面去特 二、震惊&#xff01;某校竟在公网放出学生这种信息 还是直接…

垂直领域的大模型应该如何构建?RAG还是微调呢?

垂直领域的大模型应该如何构建&#xff1f;RAG还是微调呢&#xff1f; 垂直领域的大模型应该是2024年乃至未来五年内人工智能发展的热门所在。那么该如何构建&#xff1f;是RAG&#xff08;Retrieval Augmentation Generation&#xff0c;检索增强生成&#xff09;还是微调&am…

选对软件,音乐剪辑事半功倍!2024年Top 4免费神器推

咱们现在可是生活在一个数字时代&#xff0c;搞音乐创作不用非得去那些贵的要命的录音棚&#xff0c;也不用一大堆复杂的设备了。科技这么发达&#xff0c;各种音频编辑软件多得是&#xff0c;就像雨后春笋一样&#xff0c;给喜欢音乐的人和专业人士带来了超级方便的创作工具。…