mvc4 html.pager,MVC分页之MvcPager使用详解

最近刚刚接触MVC不久,因项目中要用到分页,网上找了下资料,最后采用了MvcPager(http://www.webdiyer.com/),支持同步和Ajax异步分页。废话不多说了直接上代码。

一.MvcPager异步 ViewModel:

public class Article

{

[Display(Name = "信息编号")]

public int ID { get; set; }

[Display(Name = "信息标题")]

public string Title { get; set; }

[Display(Name = "信息内容")]

public string Content { get; set; }

}

public class AjaxPager

{

public PagedList Articles { get; set; }

}

Control:

///

/// 异步分页测试

///

/// pageIndex

/// 关键字

///

public ActionResult AjaxPaging(int? id = 1, string key = null)

{

int totalCount = 0;

int pageIndex = id ?? 1;

int pageSize = 2;

List infoList = new SoleFuDAL.MyTest().GetArticleList(key, pageSize, (pageIndex - 1) * 2, out totalCount);

PagedList InfoPager = infoList.AsQueryable().OrderByDescending(o => o.ID).ToPagedList(pageIndex, pageSize);

InfoPager.TotalItemCount = totalCount;

InfoPager.CurrentPageIndex = (int)(id ?? 1);

Models.MyTest.AjaxPager model = new Models.MyTest.AjaxPager();

model.Articles = InfoPager;

if (Request.IsAjaxRequest())

{

return PartialView("_ArticleList", model);

}

return View(model);

}

View:

@model soulefu_manage.Models.MyTest.AjaxPager

@using Webdiyer.WebControls.Mvc;

MVCPager-AjaxPaging

@using (Html.BeginForm("AjaxPaging", "MyTest", new RouteValueDictionary { { "id", "" } }, FormMethod.Get))

{

@Html.Label("关键字:")

}

@*分页Table*@

@{ Html.RenderPartial("_ArticleTable"); }

@Ajax.Pager(Model.Articles, new PagerOptions

{

PageIndexParameterName = "id",

FirstPageText = "首页",

PrevPageText = "上一页",

NextPageText = "下一页",

LastPageText = "末页",

NumericPagerItemCount = 5,

ContainerTagName = "ul",

CssClass = "pagination",

CurrentPagerItemTemplate = "

{0}",

DisabledPagerItemTemplate = "

{0}",

PagerItemTemplate = "

{0}"

}).AjaxOptions(a => a.SetUpdateTargetId("articles"))

@model soulefu_manage.Models.MyTest.AjaxPager

序号

标题

内容

@foreach (var item in Model.Articles)

{

@Html.DisplayFor(model => item.ID)

@Html.DisplayFor(modelItem => item.Title)

@Html.DisplayFor(modelItem => item.Content)

}

二.MvcPager同步

ViewModel(此处可不增加,直接和异步的共用同一个):

public class MVCPager

{

//信息列表

public PagedList Articles { get; set; }

}

Control:

///

/// 同步分页测试

///

/// pageIndex

/// 关键字

///

public ActionResult MVCPager(int? id = 1, string key = null)

{

int totalCount = 0;

int pageIndex = id ?? 1;

int pageSize = 2;

List infoList = new SoleFuDAL.MyTest().GetArticleList(key, pageSize, (pageIndex - 1) * 2, out totalCount);

PagedList InfoPager = infoList.AsQueryable().OrderByDescending(o => o.ID).ToPagedList(pageIndex, pageSize);

InfoPager.TotalItemCount = totalCount;

InfoPager.CurrentPageIndex = (int)(id ?? 1);

//数据组装到viewModel

Models.MyTest.MVCPager model = new Models.MyTest.MVCPager();

model.Articles = InfoPager;

return View(model);

}

View:

@model soulefu_manage.Models.MyTest.MVCPager

@using Webdiyer.WebControls.Mvc;

MVCPager

@using (Html.BeginForm("MVCPager", "MyTest", new RouteValueDictionary { { "id", "" } }, FormMethod.Get))

{

@Html.Label("关键字:")

}

编号标题内容

@foreach (var info in Model.Articles)

{

@Html.DisplayFor(model => info.ID)@Html.DisplayFor(model => info.Title)@Html.DisplayFor(model => info.Content)

}

@Html.Pager(Model.Articles, new PagerOptions

{

PageIndexParameterName = "id",

FirstPageText = "首页",

PrevPageText = "上一页",

NextPageText = "下一页",

LastPageText = "末页",

ContainerTagName = "ul",

CssClass = "pagination",

CurrentPagerItemTemplate = "

{0}",

DisabledPagerItemTemplate = "

{0}",

PagerItemTemplate = "

{0}",

Id = "bootstrappager"

})

获取测试数据方法(共用):

public class MyTest

{

///

/// 获取测试数据

///

///

///

///

///

///

public List GetArticleList(string key, int PageSize, int CurrentCount, out int TotalCount)

{

string tabName = string.Format("Article");

string strWhere = " 1=1";

if (!string.IsNullOrEmpty(key))

{

//SQL关键字过滤 包含关键字则不拼接SQL

if (!SqlInjection.GetString(key))

{

strWhere += string.Format(" AND (Title LIKE '%{0}%' OR Content LIKE '%{0}%')", key);

}

}

string Order = string.Format("ID ASC");

DataSet ds = SqlHelper.GetList(SqlHelper.connStr, Order, PageSize, CurrentCount, tabName, strWhere, out TotalCount);

List list = new List();

if (ds != null && ds.Tables.Count > 0)

{

foreach (DataRow dr in ds.Tables[0].Rows)

{

Article model = new Article();

model.ID = Convert.ToInt32(dr["ID"]);

model.Title = dr["Title"].ToString();

model.Content = dr["Content"].ToString();

list.Add(model);

}

}

return list;

}

}

效果图:(需要引用CSS)

00a6f37dbd0f2b8b18781ff03c5421c3.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lnmp压力测试

最近在自己的台式机上搭了个lnmp,想用压力压一压,看看结果怎么样。由于nginx只是个静态web服务器,并发能力超强,因此lnmp的性能瓶颈在于php的处理能力,即php-fpm。硬件CPU AMD Phenom(tm) II X4 945内存 4G x 4硬盘 西…

1 uC/OS工程目录

第一个项目,从整体上认识 uC/OS转载于:https://www.cnblogs.com/chdfelix/p/9581271.html

html中免费的四级联动,利用JS实现省市区街道四级联动插件

特效描述:利用JS实现 省市区街道 四级联动插件。利用JS实现省市区街道四级联动插件代码结构1. 引入CSS2. 引入JS3. HTML代码所在地区所在地区请选择请选择请选择请选择$(function(){// 地址选择器遮罩层打开与关闭$("#areaLabel").click(function(e){$(&q…

python递归面试题_汉诺塔问题其实很简单 Python 递归经典面试题

话不多说,上代码1 def hanoi_move(n, source, dest, intermediate):2 if n > 1: # 递归出口,只剩一个盘子3 hanoi_move(n-1, source, intermediate, dest)4 print("Move %s -> %s" % (source, dest))5 hanoi_move(n-1, intermediate, de…

全国计算机等级考试题库二级C操作题100套(第92套)

第92套: 函数fun的功能是:计算的前n项。若x2.5,函数值为:12.182340。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或…

原生希望原生JavaScript开篇

本篇文章个人在深圳游玩的时候突然想到的...最近就有想写几篇关于原生希望的文章,所以回家到之后就奋笔疾书的写出来发布了 一直对前端技巧很有兴致,就心生了写一个专栏的动机,然后就申请了原生JavaScript这个专栏,旨在与大家同共…

POJ 1836 Alignment

有一排人,身高可能不同,现在有一个理想状态是这排的每个人向左或向右看没有被挡住视野(当遇到等高或更高的人时会被挡住),现在问最少让几人出列可以达到这个理想状态。 最少人出列,其实就是一个人数最多的理想状态。求一个人数最多…

2021年广西高考成绩查询方法,2021年广西高考成绩查询网站查分网址:https://www.gxeea.cn/...

【摘要】高考结束后大家最为关心的问题就是在哪里查分,如何查分,高考频道特别整理2021年广西高考成绩查询查分网址,成绩公布时考生可直接点击网址进行查分,预祝大家都能顺利的考上理想的大学!由于,各省级招…

ppt倒计时_年终会议做一个这样的倒计时PPT,保证惊艳全场!1分钟就能学会

倒计时动画很经常被用在一些产品的发布会或是新年晚会的现场,因为倒计时可以营造除以中紧张的氛围~那么我们常见的倒计时动画都是怎么做出来的呢?其实一点也不难,不需要任何专业的视频软件,只要用我们日常工作中最常用的PPT就能做…

全国计算机等级考试题库二级C操作题100套(第93套)

第93套: 给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun 函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表 缩短。 请在程序的下划线处填入正确的内容并把下划线删除,使程…

修改Advance Template Jsp模板的编码格式

2019独角兽企业重金招聘Python工程师标准>>> windows ——》 preferences ——》MyEclipse——》Files and Editers——》JSP 在此widzard中修改相应的编码。 转载于:https://my.oschina.net/wangfree/blog/127313

ASP.NET Core ---日志

一、日志记录: 1、日志的作用: 程序中记录日志一般有两个目的,故障定位和显示程序运行状态。好的日志记录方式可以提供足够多定位问题的依据。 2、日志的等级: 有良好工作习惯的人,工作的时候会将领导交待下来的工作分…

2021年慈溪横河中学高考成绩查询,慈溪中学

2013浙江慈溪中考分数线公布2013年慈溪市中考成绩揭晓,从慈溪市教育局获悉,今年慈溪市普高投档控制线为485.5;慈溪中学统招线为565。昨天,公办普高第一批次录取分数线同时划定:浒山中学541.5,龙山中学485.5&#xff0c…

circle函数用法 turtle_Python绘图库Turtle详细分析

关注Python学习交流学习更多Python知识Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动&am…

全国计算机等级考试题库二级C操作题100套(第95套)

第95套: 给定程序中,函数fun的功能是:计算NN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N3,有下列…

性能测试基本流程介绍(《软件性能测试过程详解与安全剖析》)

1、性能测试团队的人员构成 性能测试团队中应包括以下角色:项目测试经理、测试设计角色、测试开发角色、测试执行角色、测试分析角色和支持角色(如系统、网络和数据库支持等)。 2、性能测试过程模型(PTGM) PTGM模型包括以下几个步骤&#xff…

苹果6s html5分数,iPhone 6s Plus的屏幕尺寸是多少?分辨率是多少?

iPhone 6s Plus的屏幕尺寸是多少iPhone 6s Plus的屏幕尺寸是5.5英寸。针对iPhone 6s Plus的屏幕尺寸是多少的问题,摄像头方面,苹果iPhone6s Plus采用了一枚1200万像素的iSight摄像头,其传感器单个像素尺寸的感光面积为1.22微米,这…

全国计算机等级考试题库二级C操作题100套(第96套)

第96套: 给定程序中,函数fun的功能是:有NN矩阵,将矩阵的外围元素顺时针旋转。 操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行, 最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。…

USB主机是如何检测到设备的插入的呢?

USB设备的插入检测机制 首先,在USB集线器的每个下游端口的D和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D或者D-上接了1.5K欧姆上拉电阻.…

python堆排序算法_python 排序 堆排序

算法思想 :堆排序利用堆数据结构设计的一种排序算法,堆是一种近似完全二叉树的结构,同时满足堆积的性质,即对于任意的i均有ki>k(2i1),ki>k(2i2)步骤:将数组转化为最大堆将当前堆的根结点和最后一个结点交换&…