博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC学习(四)几种分页的实现(1)
阅读量:5344 次
发布时间:2019-06-15

本文共 3738 字,大约阅读时间需要 12 分钟。

   这里,我使用的是Code-First,MVC3。

  我们在数据库里建一个表MyTestPages,只有一个整型字段Id。

  在写一个Model类MyTestPages,代码如下
  public class MyTestPages
  {
    [Key]
    public int Id { get; set; }
  }
 
 建好表后,需要往里面插入一定量的数据,建议最好10万条以上,效果明显。
  首先看一下运行效果如下图所示。

  

  然后在HomeController里建一个名为Archtive的Action以及对于视图Archtive.cshtml。

  前台代码如下:

@model IEnumerable
@foreach(var item in Model) {
}
序号
@item.Id
前台代码

  在用户点击分页按钮时,调用了Js GoPage()函数

  window.open("/home/Archtive/"+flag+"/"+@ViewBag.PIndex, "_self");

  向Action传入了两个参数,MVC默认是只能传入一个参数的,因此,这里在添加了一个路由,代码如下(注意参数名称):

routes.MapRoute("Default1",                 "{controller}/{action}/{GoFlag}/{PageIndex}",                 new { controller = "", action = "" },                 new { });

  Controller代码如下:

public ActionResult Archtive(string GoFlag, string PageIndex)        {                        int PageSize = 5;            int TotalCount = LzsDB.MyTestPages.Count();//获得此数据表中数据记录数            double PageCount = Math.Ceiling((double)TotalCount / (double)PageSize);//获得总页数            int NowPageIndex = 1;            if (!string.IsNullOrEmpty(PageIndex))            {                int ErrorPageIndex = 1;                if (!Int32.TryParse(PageIndex, out ErrorPageIndex))//如果不能转换成整数,则默认当前页码为1                {                    PageIndex = "1";                }                NowPageIndex = Convert.ToInt32(PageIndex);//            }            GoFlag = string.IsNullOrEmpty(GoFlag) ? "First" : GoFlag;            switch (GoFlag)            {                case "First":                    ViewBag.PIndex = 1;                    NowPageIndex = 1;                    break;                case "Pre":                    if (Convert.ToInt32(PageIndex) - 1 <= 0)                    {                        ViewBag.PIndex = 1;                        NowPageIndex = 1;                    }                    else                    {                        ViewBag.PIndex = Convert.ToInt32(PageIndex) - 1;                        NowPageIndex = Convert.ToInt32(PageIndex) - 1;                    }                    break;                case "Next":                    if (Convert.ToInt32(PageCount) - Convert.ToInt32(PageIndex) <= 0)            //如果当前页是第最后页 则下一页没有后一页                    {                        ViewBag.PIndex = PageCount;                        NowPageIndex = Convert.ToInt32(PageCount);                    }                    else                    {                        ViewBag.PIndex = Convert.ToInt32(PageIndex) + 1;                        NowPageIndex = Convert.ToInt32(PageIndex) + 1;                    }                    break;                case "Last":                    ViewBag.PIndex = PageCount;                    NowPageIndex = Convert.ToInt32(PageCount);                    break;            }            string LastPageSize = (PageSize * (NowPageIndex - 1)).ToString();            string findSql = "select top " + PageSize + " * from MyTestPages "               + "where Id not in( select top " + LastPageSize + " Id from MyTestPages order by Id) order by Id";            var TestPageModels = LzsDB.Database.SqlQuery
(findSql); return View(TestPageModels.ToList()); }
Controller代码

  这里对Linq to sql不太熟悉,因此,就使用了最原始的Sql分页语句获得数据。

转载于:https://www.cnblogs.com/xianrongbin/p/3460880.html

你可能感兴趣的文章
数据库——范式【转】
查看>>
Linux基本命令
查看>>
jquery ajax
查看>>
Yaf零基础学习总结8-Yaf中的路由和路由协议
查看>>
作业九 ——报告及总结
查看>>
mac下的几个命令-黑苹果之路
查看>>
学习EXTJS6(2)“Hello Usegear”
查看>>
python基础总结(函数)
查看>>
05、应用程序数据操作(下)
查看>>
软件工程第一次作业
查看>>
Java中Collection和Collections的区别(转载)
查看>>
ELK初学搭建(kibana)
查看>>
winform继承窗体,无法修改父窗体控件问题处理笔记
查看>>
51nod 1616 最小集合(枚举倍数)
查看>>
沉淀,再出发:Django的简单使用
查看>>
Item 7: Declare destructors virtual in polymorphic base classes(Effective C++)
查看>>
Style(Chapter 9 of JavaScript: The Good Parts)
查看>>
网页3D引擎“Babylon.JS”入门教程翻译总结
查看>>
对Menu Button 说再见(翻译)
查看>>
Linux在防火墙中开放SVN端口
查看>>