首页 / ASP.NET MVC / 正文

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)

4841 4评论 发布于: 2018-03-04 读完约需6分钟

前言

小伙伴们,
大家好,我是Rector。
最近Rector忙于换工作,没有太多时间来更新我们的ASP.NET MVC 5系列文章 [一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar],直到现在才挤些时间赶紧更新一篇,小伙伴们等得太久了。

写系列文章是一件并不容易的事情,相信有过写系列文章经验朋友也应该有所体会。

本文知识要点

本期是该系列的第十一篇,上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)》我们了解了母版页和部分视图,并使用母版页和部分视图重新组织了页面的共用区域的HTML代码,本文我们将要涉及到的内容为:

  • 通用分页的封装
  • 文章分页的实现

通用分页的封装

在之前两期中,我们的文章列表页面是没有分页功能的,而是使用如下方法:

来读取文章表中的前N(20)条记录作为首页的文章列表数据源。那么,本文将为大家封装一个通用的分页信息类以及分页泛型方法,并最终实现首页文章列表的数据分页功能。分页效果如下图:

一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar

创建IPagedList接口及实现

打开项目TsBlog.Repositories,在此项目中分别新建两个类:IPagedList.csPagedList.cs,代码分别如下:

IPagedList.cs

IPagedLIst.cs

其中,IPagedList.cs为一个分页信息接口,包含了分页的基本信息,如:当前页索引(PageIndex),分页大小(PageSize),总记录数(TotalCount),总页数(TotalPages)等等。而PagedList.cs类文件则是对IPagedList.cs接口的实现。

添加泛型仓储分页接口

打开项目TsBlog.RepositoriesIRepository.cs 文件,在其中新建分页接口,如下:

再打开此项目中的 GenericRepository.cs 泛型仓储实现类,在其中实现FindPagedList这个分页方法,如下:

类似地操作,打开项目 TsBlog.Services,并打开文件 IService.cs,在其中添加分页服务接口,如下:

再打开此项目中的泛型服务类GenericService.cs,在其中实现分页服务接口,如下:

到此,我们的泛型仓储和服务的通用分页接口和实现就封装完成了,现在我们需要使用以上的分页封装,在UI层来实现文章列表的分页功能。

切换到项目 TsBlog.Frontend

安装第三方分页组件

为了方便,本示例教程使用的是第三方的分页组件来实现UI层的分页功能,组件为:PagedList。安装的方式为:nuget,所以与以前几期的nuget包安装类似,打开nuget包管理工具,搜索关键词PagedList,在查询出来的包中,选择PagedList.MvcPagedList两个分页组件包并安装,如下:

分页组件安装完成之后,我们再打开 HomeController 控制器,修改Index这个ActionHomerController.cs修改后的完整代码如下:

最后,再打开Index对应的视图文件:/Views/Home/Index.cshtml,添加分页控件,如下:

以上所有更改完成后,就完成了我们对通用分页的封装和实现,当然,这个通用分页是非常简单的,只能满足单表数据的分页查询和读取。更复杂的分页需求请自行根据思路进行实现。

完成以上步骤之后,我们重新编译和生成项目 TsBlog.Frontend 。最后,在浏览器中打开地址: http://localhost:54739/ ,检查一下,数据分页功能是否起作用了呢?

好了,如果你喜欢Rector,或者是喜欢本系列文章,请为我点个赞,以鼓励Rectro继续写出更好的文章,或者系列文章。

本期源码托管地址:https://github.com/lampo1024/TsBlog/releases/tag/v1.11.0

看完教程如果觉得还不过瘾的,想“勾对”的,欢迎加入图享网官方QQ群:483350228,如果你按照教程还原出来的程序运行有问题,请参照本期源码对应调整与修改遇到问题的,也欢迎加入QQ群。有什么,你懂的。。。^_^

谢谢你的耐心阅读,本系列未完待续,我们下期再见……

同时,也欢迎大家关注我们的.NET编程爱好者社区:https://codedefault.com 每天都有.NET的开发技术干货更新哦。

[https://codedefault.com] 一个.NET编程爱好者社区,专注.NET/C#开发,帮助你找到疑难问题的更优美、更高级的解决方案

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [SQL Server]SQL Server中如何替换数据表中某个列中所以符合条件的行的字符串?

下一篇: [SQL Server]SQL Server中如何将某些列的值按列分组并接连成单个字符串?

本文永久链接码友网 » 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册

热门评论

友好17 (2021-01-21 16:08)

迟来的评论
回复 赞(0)
  • 感谢支持,希望文章对你有帮助。

    Rector · 2021-01-21 16:09 赞(0)

zhuyihongwei (2019-06-24 09:09)

经常报 "None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type ...." 的错误, 需要重新生成解决方案, 发布后也是一样,隔段时间就报这个错 ,这是什么原因呢
回复 赞(0)
  • 报这个错误,表示可能你项目中的部分服务没有成功注册到容器中,建议你仔细检查一下依赖注入的服务接口和实现是否都注册了。

    Rector · 2019-06-24 09:23 赞(0)

wanla (2018-04-24 17:11)

如果有多个数据库,要怎么实现多数据库随意切换查询?
回复 赞(0)

JmlSaul (2018-03-12 20:22)

repository里orderby参数默认为“”,报错:可以加判断,为空不排序 home/index的page参数默认为0报错:默认改为1
回复 赞(1)