ASP.NET MVC分页

ASP.NET MVC+bootstrap paginator分页 之前做过一个bootstrap table的分页的项目,但是今天自己打算写着一个网站来玩儿,但是遇到的问题就是不能用table分页但是最好Ajax分页,经过查阅网上的资料,本人得出了解决方案,马上上代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy 阅读详情

之前写了一个关于ASP.NET MVC+妹子UI的Ajax分页控件,今天在那个控件的基础上,抽出了一个后台的分页控件,特此与大家分享

 public class PageFactory
    {

        public PageFactory( string Controller, string Action, int Total, int limit,string Area=""
            ,Dictionary<string,string> Parameter=null)
        {
            this._controller = Controller;
            this._action = Action;
            this._area = Area;
            Url = "/" + _area + "/"+this._controller + "/" + this._action + "?"+_assemblyParameter(Parameter)+"offset=";
            _totalBars = Convert.ToInt32(Math.Ceiling((double)(Total *1.0f/ limit)));
        }



        public PageFactory(string Controller, string Action, int Total, int limit,string Area="")
        {
            this._controller = Controller;
            this._action = Action;
            Url = "/" + this._controller + "/" + this._action + "?offset=";
            _totalBars = Convert.ToInt32(Math.Ceiling((double)(Total*1.0f / limit)));
        }

        private string _area;

        private string _action;

        private string _controller;

        /// <summary>
        /// 增加参数方法
        /// </summary>
        /// <param name="Parameter"></param>
        /// <returns></returns>
        private string _assemblyParameter(Dictionary<string, string> Parameter)
        {
            if (Parameter == null || Parameter.Count == 0)
            {
                return "";
            }

            StringBuilder assem = new StringBuilder();

            foreach (var item in Parameter)
            {
                assem.Append(item.Key + "=" + item.Value+"&");
            }
            return assem.ToString();
        }

        private string Url;

        private int _totalBars;

        /// <summary>
        /// 初始化方法
        /// </summary>
        /// <returns></returns>
        private MvcHtmlString _init()
        {

            StringBuilder htmlSb = new StringBuilder();

            htmlSb.Append("<li class=\"am-disabled\"><a href=\"javascript:;\">«</a></li>");
            //上一页,(禁用的效果) 
            string nextBar = this._totalBars > 1 ? "<li><a href=\"" + this.Url + 2 + "\">»</a></li>" : "<li class=\"am-disabled\"><a href=\"javascript:;\">»</a></li>";
            //最后一页
            htmlSb.Append("<li class=\"am-active\"><a href=\"" + Url + 1 + "\">1</a></li>");

            if (_totalBars <= 7)
            {
                for (var i = 1; i < _totalBars; i++)
                {
                    htmlSb.Append("<li><a href=\"" + Url + (i + 1) + "\">" + (i + 1) + "</a></li>");
                }
            }
            else
            {
                for (var j = 1; j < 5; j++)
                {
                    htmlSb.Append("<li><a href=\"" + Url + (j + 1) + "\">" + (j + 1) + "</a></li>");
                }
                htmlSb.Append("<li><a href=\"javascript:;\">...</a></li>");
                htmlSb.Append("<li><a href=\"" + Url + (_totalBars) + "\">" + (_totalBars) + "</a></li>");
            }
            htmlSb.Append(nextBar);
            return new MvcHtmlString(htmlSb.ToString());
        }


        /// <summary>
        /// 核心方法
        /// </summary>
        /// <param name="offset"></param>
        /// <returns></returns>
        public MvcHtmlString Core(int offset)
        {

            if (offset == 0)
            {
                return this._init();
            }

            StringBuilder htmlHelper = new StringBuilder();

                var nextBar = offset == this._totalBars ? "<li class=\"am-disabled\"><a href=\"javascript:;\">»</a></li>" :
                    "<li><a href=\"" + this.Url + (offset + 1) + "\">»</a></li>";
                var preBar = offset == 1 ? "<li class=\"am-disabled\"><a href=\"javascript:;\">«</a></li>" :
                    "<li><a href=\"" + this.Url + (offset - 1) + "\">«</a></li>";
            //组装向上一个节点和下一页节点
            htmlHelper.Append(preBar);

            try
            {
                #region 分页核心代码
                if (this._totalBars > 7)
                {
                    if (offset < 5)
                    {

                        for (var i = 1; i <= 5; i++)
                        {
                            if (i == offset)
                            {
                                htmlHelper.Append("<li class=\"am-active\"><a href=\"" + this.Url + offset + "\">" + offset + "</a></li>");
                            }
                            else
                            {
                                htmlHelper.Append("<li><a href=\"" + this.Url + i + "\">" + i + "</a></li>");
                            }
                        }
                        htmlHelper.Append("<li><a>...</a></li>");
                        htmlHelper.Append("<li><a href=\"" + this.Url + (this._totalBars) + "\">" + (this._totalBars) + "</a></li>" + nextBar);
                    }
                    else if (offset >= 5 && offset <= this._totalBars - 4)
                    {

                        htmlHelper.Append("<li><a href=\"" + this.Url + 1 + "\">" + 1 + "</a></li>");
                        //第一个
                        htmlHelper.Append("<li><a>...</a></li>"); //省略号

                        htmlHelper.Append("<li><a href=\"" + this.Url + (offset - 1) + "\">" + (offset - 1) + "</a></li>");

                        htmlHelper.Append("<li class=\"am-active\"><a  href=\"" + this.Url + offset + "\">" + offset + "</a></li>");

                        htmlHelper.Append("<li><a href=\"" + this.Url + (offset + 1) + "\">" + (offset + 1) + "</a></li>");

                        htmlHelper.Append("<li><a>...</a></li>"); //省略号;

                        htmlHelper.Append("<li><a href=\"" + this.Url + (this._totalBars) + "\">" + (this._totalBars) + "</a></li>"); //尾页

                        htmlHelper.Append(nextBar);

                    }
                    else if (offset > this._totalBars - 4 && offset <= this._totalBars)
                    {

                        htmlHelper.Append("<li><a href=\"" + this.Url + 1 + "\">" + 1 + "</a></li>" + "<li><a>...</a></li>");

                        for (var j = 4; j >= 0; j--)
                        {
                            if (this._totalBars - j == offset)
                            {
                                htmlHelper.Append("<li class=\"am-active\"><a href=\"" + this.Url + (this._totalBars - j) + "\">" + (this._totalBars - j) + "</a></li>");
                            }
                            else
                            {
                                htmlHelper.Append("<li><a href=\"" + this.Url + (this._totalBars - j) + "\">" + (this._totalBars - j) + "</a></li>");
                            }
                        }
                        htmlHelper.Append(nextBar);
                    }
                    else
                    {
                        throw new Exception("分页数据出错!");
                    }
                }
                else
                {
                    for (var i = 1; i <= this._totalBars; i++)
                    {
                        if (i == offset)
                        {
                            htmlHelper.Append("<li class=\"am-active\"><a href=\"" + this.Url + offset + "\">" + offset + "</a></li>");
                        }
                        else
                        {
                            htmlHelper.Append("<li><a href=\"" + this.Url + i + "\">" + i + "</a></li>");
                        }
                    }
                    htmlHelper.Append(nextBar);
                }
                #endregion
            }
            catch (Exception ex)
            {
                return new MvcHtmlString("");
            }
            
            return new MvcHtmlString(htmlHelper.ToString());
        }
    }

以上就是分页的核心代码,看不懂没有关系,会调用就行。

为了使得后台调用简单,我们将其扩展在Razor的Html对象上,那样的话,@Html(参数列表)就可以使用了

public static MvcHtmlString PageBar(this HtmlHelper htmlhelper, string area, string controller, string action, int pagesize, int totalcount)
        {
            int offset = 0;
                
            string queryOffset=HttpContext.Current.Request.QueryString["offset"];

            int.TryParse(queryOffset, out offset);

            PageFactory helper = null;
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("Name", "Yangxu");
            dic.Add("Product", "Fruit");
            helper = new PageFactory(controller, action, totalcount, pagesize,area,dic);
            
            return helper.Core(offset);
        }
因为有些时候要GET传递参数,需要传入GET参数的键值对。

运行结果如下


可供参考的CSS样式我也为大家贴出来:

.result-page a {
    display:inline-block;
    float: left;
    margin-left: 10px;
    width: 30px;
    height: 30px;
    line-height: 30px;
    text-align: center;
    font-family: '微软雅黑';
    border: #cccccc 1px solid;
    border-radius: 2px;
    color: #31a030;
    background: white;
    margin-top: 35px;
    text-decoration:none;
}

.result-page a:hover,.result-page a:active {
     background: #31a030;
     color: white;
}

.am-active a{
    background: #31a030 !important;
    color: white !important;
}

希望对大家有帮助。吐舌头

ASP.NET MVC5 PagedList分页示例 ASP.NET MVC是目前ASP.NET开发当中轻量级的Web开发解决方案,在ASP.NET MVC概述这篇译文当中,已经详细的介绍了ASP.NET MVC与Web Forms的区别以及各自的适用场景。由于ASP.NET MVC尤其适合网站的开发(Web Forms更适合业务系统的开发),目前成为很多网站开发者的首先框架。这里举个典型的例子(表格的分页),以此熟悉一下ASP.NET MVC的开发 阅读详情

相关推荐

可重用的MVC分页方法(ASP.NET MVC)

这是一个非常实用的MVC分页案例! 不需要借助任何插件,实现纯手工分页,而又不失简洁。 代码打开即可运行!

ASP.NET MVC 的分页

一,定义分页器类   在ASP.NET MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义。 public class PagingHelper    二,基本三要素   实现分页人所共知的三个基本属性: DataSource:数据源,要知道数据源共计多少条数据,会对应一个数据源的方法-Count(), PageSize:来描述每页显示的记录的条数。 Page

那一抹、璀璨 1102

ASP.NET MVC分页的实现方法

主要为大家详细介绍了ASP.NET MVC分页的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

asp.net mvc 分页

手学类库, //css样式表 <style> ul.pagination { display: inline-block; padding: 0; margin: 0; } ul.pagination li { ...

愤怒的菜鸟 3119

asp.net Mvc4 使用ajax结合分页插件实现无刷新分页

本篇文章主要介绍了 asp.net Mvc4 使用ajax结合分页插件实现无刷新分页,ajax通过回调函数把控制器返回的分部视图内容加载到主视图中显示,有兴趣的可以了解一下。

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

ASP.NET MVC程序实现真分页(案例详细,值得收藏)

MVC中使用LINQ的查询语法结合BootStarp框架实现MVC分页功能的实现

code_xu的博客 1719

什么是plm系统?-数字化转型网

当今世界,产品研发能力是企业在激烈的市场竞争中保持战略优势的核心竞争力之一。如何有效地缩短产品研发周期、改善产品服务的设计迭代流程、有效降低产品的研发成本,也是企业面临的主要问题之一。PLM(Product Lifecycle Management,产品生命周期管理)在优化产品研发的全管理流程、增强企业产品的市场竞争力方面具有关键的作用。

cxo17757154043的博客 883

ASP.NET MVC分页【无搜索条件的分页设计】

ASP.NET MVC中进行分页的方式有多种,在NuGet上有提供使用PagedList、PagedList.Mvc进行分页。   1. 通过NuGet引用PagedList.Mvc   在安装引用PagedList.Mvc的同时会安装引用PagedList。   2. PagedList.Mvc基本使用   ProvinceController.cs:

马里奥的专栏 795

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

南方cass9.1【Frame主框架程序没有加载】解决方法(附安装包)

南方cass9.1【Frame主框架程序没有加载】解决方法。

weixin_46066938的博客 3万+

ASP.net MVC分页实例

第一步:写         public ActionResult NewsList(int pgindex = 1)         {             int counts = 0;             int pageCount = 0;             ViewBag.newsList = new MvcHtmlString(NewsListMore("主题,

大猴子的专栏 2117

智能园艺:AI Agent控制的室内种植系统

随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。

AI天才研究院 784

基于IPagedList 的 Asp.Net MVC 分页

上次写过一篇MVC分页的自己用的一个ASP.Net MVC分页拿出来分享下现在发一个改进版里面用到的IPagedList我自己也记不清是从哪里COPY来的了。呵呵这里我就不把IPagedList的代码贴出来了,要使的下载DEMO自己拿吧。  后台对数据的分页public ActionResult Index([DefaultValue(1)]int p,[Defau

zhdd1234的专栏 787

科研生产力革命:手把手教你打造基于大模型的Research Agent(文献调研+论文写作+思路激发)

本文介绍了如何利用Research Agent(科研智能体)提升科研效率。Research Agent能自主完成文献检索、信息整合和报告生成全流程,省去50%以上的基础工作时间。文章详细讲解了搭建运行环境的方法,包括工具准备和MetaGPT配置,并提供了两种实战方案:基础版Search-O1和专业版MetaGPT Research Agent。此外,还介绍了如何为垂直领域定制Agent,以及优化检索效果、改善报告逻辑等技巧。最后列举了学术研究、行业分析、内容创作和个人学习四大应用场景,帮助用户将AI从聊天工

LXY_LOVE36的博客 267

使用STM32实现简单的语音识别

此外,还需要将计算机的音频输出连接到外部音频放大器上,以便将测试语音播放到MAX9814麦克风模块。运行STM32代码后,系统将开始采集语音数据,并在采集完成后调用Python脚本进行MFCC特征提取。在本案例中,我们将使用STM32F4开发板、MAX9814麦克风模块和MFCC特征提取算法来实现语音识别。通过这个案例,我们可以了解到如何结合STM32开发板和Python实现语音识别,并可以根据需要进行相关扩展和优化。现在,我们可以编译和烧录STM32代码到开发板中,并准备好测试语音文件。

吃不胖. 1475

asp.net mvc强大的分页控件MvcPager

<br />http://www.itpob.cn<br />不管使用什么来开发程序,都少不了需要做分页,目前使用asp.net mvc开发的web应用程序的人越来越多了,相应的辅助,提高开发效率的helper方法、控件都将会出现。今天我向大家介绍一款在asp.net mvc框架中使用的分页控件。本人也是在新年的时候初次使用,但是一直没有推荐给大家。利用五一休息时间也就介绍给大家。声明我与博杨计算机有限公司无任何关系只是觉得这个分页控件很好用,并且功能强大,在这里是真的只为介绍这款分页控件。<br />另外

我的地盘 1386

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

asp.net mvc 简单分页实现

分页首先最重要的两个参数就是当前页和页面大小。 在Controller中: 分页 public ActionResult Test(string index) { if (string.IsNullOrEmpty(

z767327552的专栏 2307

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ASP.NET MVC分页、ASP.NET MVC Ajax分页组件1.0发布!

新年到!先给博客园的朋友们拜个年!祝大家新年快乐! 在实际项目的开发过程中!发现很多人对ASP.NET MVC框架下的分页实现感到吃力或者感到繁琐!故在元旦假期为大家写了个ASP.NET MVC分页组件!该分页组件现中包含ASP.NET MVC AJAX分页以及ASP.NET MVC 普通分页!现正式发布供大家使用! 因本人水平有限!使用之中发现不足之处还望大家指...

weixin_34253126的博客 340

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Asp.Net Mvc 分页

namespace CPS.Mvc//此片命名空间很重要 { /// <summary> /// 分页按钮控件 /// </summary> public static class HtmlHelperPaginationExtensions { /// <summary> /// 呈现普通分页按钮 /// </summary> /// <param.

260

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

详解ASP.NET MVC pager 分页

ASP.NET MVC框架已经进入2.0时代,本文将从ASP.NET MVC数据分页谈起,希望能对大家有所帮助。 在网页上进行表格资料或其他显示资料的分页是一种十分常见的需求,以前我们有 GridView 或 DataPager 可以帮我们自动分页,虽然到了 ASP.NET MVC 一切全部重头来过,但我们也不用真的那麽辛苦的自己实做分页,因为早就有人帮我们写好程式并开放原始码分享给这个世界了。

wilsonke的专栏 1457

【ASP.NET】分页 使用PagedList.Mvc

在管理NuGet程序包为项目安装PagedList.Mvc 在Controller中引入命名空间using PagedList; 获取分页数据 public ActionResult Index(int? page) { //第几页 int pageNumber = page ?? 1; //每页显示数据条数 int pageSize = 2; ...

GreAmbWang的博客 900

ASP.NET MVC 简单的分页思想与实现

  作为一个程序猿,数据分页是每个人都会遇到的问题。解决方案更是琳琅满目,花样百出。但基本的思想都是差不多的。   下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MVC中的简单实现与应用。 一,定义分页器类   在ASP.NET MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义。 public class P...

diaoqin4202的博客 552

asp.net中mvc分页类

分页代码如下(PageHelper.cs):代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 using System;  2 using System.Collections.Generic;  3 using System.

simple life 585
上一篇: 使用纯CSS实现文字超过一定的长度后自动显示省略号
下一篇: ASP.NET MVC实现多文件上传
遛狗的代码
博客等级 码龄11年 10粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值