当前位置: 代码网 > it编程>编程语言>Asp.net > ASP.NET MVC懒加载如何逐步加载数据库信息

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

2024年10月30日 Asp.net 我要评论
环境:win10, .net 6.0问题描述假设我数据库中有n个表,当我打开某页面时,每个表都先加载一部分(比如20条),点击表下某个按钮,再加载下一部分,如此循环直至加载完毕。解决方案基础版数据库查

环境:
win10, .net 6.0

问题描述

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

解决方案

基础版

数据库查询部分(entity framework)

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>

到此这篇关于asp.net mvc-懒加载-逐步加载数据库信息的文章就介绍到这了,更多相关asp.net mvc逐步加载数据库信息内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com