asp.net mvc 分页 CPager(秒杀杨涛MvcPager)之封装之前

来源:互联网 发布:高斯滤波器的算法 编辑:程序博客网 时间:2024/05/22 18:22

基于路由的分页

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using CPager.Models;using System.Data.Entity;namespace CPager.Controllers{    public class HomeController : Controller    {        NiceMusicDBContext db = new NiceMusicDBContext();        public ActionResult Index(int id = 1)        {            return View(List_ViewBag<MP3>("MP3",id,20));        }        public List<T> List_ViewBag<T>(string TableName,int PageIndex,int PageSize)        {            string sql1 = $"select count(*) from [{TableName}]";            int DataCount = db.Database.SqlQuery<int>(sql1).ToList()[0];            int PageCount = DataCount % PageSize == 0 ? DataCount / PageSize : DataCount / PageSize + 1;            int min = PageSize * (PageIndex - 1);            string sql2 = $"select top {PageSize} * from [{TableName}] where (ID not in(select top {min} ID from [{TableName}]))";            List<T> l = db.Database.SqlQuery<T>(sql2).ToList();            if (PageCount <= PageSize)            {                ViewBag.Flag = 0;            }            else            {                if (PageIndex <= 6)                {                    ViewBag.Flag = 1;                }                else                {                    if (PageIndex < PageCount - 4)                    {                        ViewBag.Flag = 2;                    }                    else                    {                        ViewBag.Flag = 3;                    }                }            }            ViewBag.PageIndex = PageIndex;            ViewBag.PageCount = PageCount;            return l;        }        //public void ViewBag_Table_PageControll<T>(string TableName, int PageIndex, int PageSize)        //{        //}    }}

前台代码

@model IEnumerable<CPager.Models.MP3><!DOCTYPE html><html><head>    <meta name="viewport" content="width=device-width" />    <title>CPager</title>    <link href="~/CFrame.css" rel="stylesheet" />    <script src="~/CFrame.js"></script></head><body>    <table class="tb1 position2">        <tr>            <td>编号</td>            <td>歌手名字</td>            <td>歌手性别</td>            <td>歌手分类</td>            <td>音乐名称</td>            <td>片段标识</td>            <td>片段歌词</td>            <td>时间(s)</td>        </tr>        @foreach (var item in Model)        {            <tr>                <td>@item.Id</td>                <td>@item.Singer_Name</td>                <td>@item.Singer_Sex</td>                <td>@item.Singer_Type</td>                <td>@item.Song_Name</td>                <td>@item.Song_Id</td>                <td><a href="#">查看</a></td>                <td>@item.Time</td>            </tr>        }    </table>    <div class="parent_div position2">        @if (ViewBag.Flag == 0)        {            int p = ViewBag.PageIndex - 1;            string p_url = "/Home/Index/" + p;            string n_url = "/Home/Index/" + (p + 2);            string l_url = "/Home/Index/" + ViewBag.PageCount;            if (ViewBag.PageIndex == 1)            {                <a class="fpnl disabled">首页</a>                <a class="fpnl disabled">上页</a>            }            else            {                <a href="/Home/Index/1" class="fpnl">首页</a>                <a href=@p_url class="fpnl">上页</a>            }            for (int i = 1; i <= ViewBag.PageCount; i++)            {                string g_url = "/Home/Index/" + i;                if (i == p + 1)                {                    <a href=@g_url class="co active">@i</a>                    continue;                }                <a href=@g_url class="co">@i</a>            }            if (ViewBag.PageIndex == ViewBag.PageCount)            {                <a class="fpnl disabled">下页</a>                <a class="fpnl disabled">尾页</a>            }            else            {                <a href=@n_url class="fpnl">下页</a>                <a href=@l_url class="fpnl">尾页</a>            }        }        else if (ViewBag.Flag == 1)        {            int p = ViewBag.PageIndex - 1;            string p_url = "/Home/Index/" + p;            string n_url = "/Home/Index/" + (p + 2);            string l_url = "/Home/Index/" + ViewBag.PageCount;            if (ViewBag.PageIndex == 1)            {                <a class="fpnl disabled">首页</a>                <a class="fpnl disabled">上页</a>            }            else            {                <a href="/Home/Index/1" class="fpnl">首页</a>                <a href=@p_url class="fpnl">上页</a>            }            for (int i = 1; i <= 10; i++)            {                string g_url = "/Home/Index/" + i;                if (i == p + 1)                {                    <a href=@g_url class="co active">@i</a>                    continue;                }                <a href=@g_url class="co">@i</a>            }            <a href="/Home/Index/11" class="co">...</a>            <a href=@n_url class="fpnl">下页</a>            <a href=@l_url class="fpnl">尾页</a>        }        else if (ViewBag.Flag == 2)        {            int p = ViewBag.PageIndex - 1;            string p_url = "/Home/Index/" + p;            string nonel_url = "/Home/Index/" + (ViewBag.PageIndex - 6);            string noner_url = "/Home/Index/" + (ViewBag.PageIndex + 5);            string n_url = "/Home/Index/" + (p + 2);            string l_url = "/Home/Index/" + ViewBag.PageCount;            <a href="/Home/Index/1" class="fpnl">首页</a>            <a href=@p_url class="fpnl">上页</a>            <a href=@nonel_url class="co">...</a>            for (int i = p - 4; i <= p + 5; i++)            {                string g_url = "/Home/Index/" + i;                if (i == p + 1)                {                    <a href=@g_url class="co active">@i</a>                    continue;                }                <a href=@g_url class="co">@i</a>            }            <a href=@noner_url class="co">...</a>            <a href=@n_url class="fpnl">下页</a>            <a href=@l_url class="fpnl">尾页</a>        }        else if (ViewBag.Flag == 3)        {            int p = ViewBag.PageIndex - 1;            string p_url = "/Home/Index/" + p;            string nonel_url = "/Home/Index/" + (ViewBag.PageCount - 10);            string n_url = "/Home/Index/" + (p + 2);            string l_url = "/Home/Index/" + ViewBag.PageCount;            <a href="/Home/Index/1" class="fpnl">首页</a>            <a href=@p_url class="fpnl">上页</a>            <a href=@nonel_url class="co">...</a>            for (int i = ViewBag.PageCount - 9; i <= ViewBag.PageCount; i++)            {                string g_url = "/Home/Index/" + i;                if (i == p + 1)                {                    <a href=@g_url class="co active">@i</a>                    continue;                }                <a href=@g_url class="co">@i</a>            }            if (ViewBag.PageIndex == ViewBag.PageCount)            {                <a class="fpnl disabled">下页</a>                <a class="fpnl disabled">尾页</a>            }            else            {                <a href=@n_url class="fpnl">下页</a>                <a href=@l_url class="fpnl">尾页</a>            }        }    </div></body></html>


0 0
原创粉丝点击