MVC分页方法+js

控制器端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
    public class PagedCarController : Controller
    {
        private const int PAGESIZE = 3;

        public ActionResult Index(int id)
        {
            int pageCount =new CarBF().GetPageCount(PAGESIZE);//路由中定义了初始id=1
            ViewBag.PageNo = id;
            ViewBag.PageCount = pageCount;

            List<int> pagelist = new List<int>();
            for (int i = 1; i <= pageCount; i++)
            {
                pagelist.Add(i);//生成下拉列表的页码
            }
            SelectList selectList = new SelectList(pagelist,id);//(显示的内容,选中的内容id)

            ViewBag.PageList = selectList;

            List<Car> list = new CarBF().Select(PAGESIZE, id);//每页显示3条
            return View(list);
        }

    }
}

视图端代码:

@using MvcApplication1.Models;
@model List<Car>
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script language="javascript">
        function dochange() {
            var s = document.getElementById("pageid").value;
            //var str = "new {id="+s+"}";
            window.location.href = ("/PagedCar/Index/" + s);//相当于执行了控制器下的Index动作,并将s当作id传入视图中
        }
    </script>
</head>
<body>
    <div>
        <ul>
            @foreach( Car data in Model ){
            <li>@data.Name</li>
            }
        </ul>
        @{
            int pageCount = (int)ViewBag.PageCount;
            int nowPage = (int)ViewBag.PageNo;
            int prevPage = nowPage - 1;
            int nextPage = nowPage + 1;
            }
        @Html.ActionLink("首页", "Index", "PagedCar", new { id=1},null)
        @Html.ActionLink("上一页", "Index", "PagedCar", new { id = prevPage }, new { onclick = (prevPage <= 0 ? "return false" : "return true") })
        @Html.ActionLink("下一页", "Index", "PagedCar", new { id = nextPage }, new { onclick=(nextPage > pageCount?"return false;":"return true;" )})
        @Html.ActionLink("尾页", "Index", "PagedCar", new { id = pageCount },null)
        转向 @Html.DropDownList("pageid", ViewBag.PageList as SelectList, new { onchange="dochange()"}) 页
    </div>
</body>
</html>

Model层方法代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication1.Models
{
    public class CarBF
    {
        private MyDBDataContext _Context = new MyDBDataContext();
        public List<Car> Select(int pageSize,int pageNo) //pageNo从1开始算的(初始页面),显示pageNo页
        {
            var query = _Context.Car.Skip(pageSize * (pageNo - 1)).Take(pageSize);//skip跳过(当前页-1)*每页显示几条(行),再take取出当前页显示的条数
            return query.ToList();
        }
        public int GetPageCount(int pageSize)//计算总共有多少页
        {
            int rowsCount = _Context.Car.Count();//计算一共有多少行
            int pageCount = (int)Math.Ceiling( 1.0* rowsCount / pageSize);//总行数÷每页显示的个数pageSize为总共多少页,×1.0为防止:例如:2.4int时为2,再ceiling2.4=3
            return pageCount;
        }
    }
}
时间: 2024-07-28 22:22:00

MVC分页方法+js的相关文章

mvc 分页视图 js 失效

MVC的分页视图确实是好东西,比ajax直观,可是联动后 之前绑定的js事件失效,所以我们在绑定的时候,要注意使用jquery的 动态绑定功能 最常见的用法应该是 select 的 change 事件 在jquery1.9之前 可以使用 live事件 $("#Select_ShopCar").live("change",function(){ customchange(); }); jquery1.9以后的 则要使用on事件 $(document).on("

Mvc 分页栏扩展方法

using System; using System.Collections.Generic; using System.Reflection; using System.Text; using System.Web.Mvc; namespace System.Web.Mvc {     #region Mvc 分页栏扩展方法 HtmlPaginationBar /// <summary>     ///  Mvc 分页栏扩展方法     /// </summary>     pu

Mvc分页组件MvcSimplePager代码重构

1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件MvcSimplePager代码重构 Intro MvcSimplePager 是为解决分页的而做的一个通用.扩展性良好的轻量级分页扩展,可以自定义分页时调用的方法,自定义分页所用的样式,样式与代码分离,维护方便. 网上有许多分页都是查询所有数据再从中查询某一页的数据,但是个人感觉数据很少时还可以,如

Asp.Net MVC 分页、检索、排序整体实现

原文:Asp.Net MVC 分页.检索.排序整体实现 很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功能不是高大全,但求一个清楚明白,也欢迎园友拍砖.前端是bootstrap3+jPaginate,后台基于membership.没什么难点. 先上效果图. 分页其实就是处理好 每页项目数.总项目数.总页数.当前页.为了方便复用,就先从仓库开始说起

MVC分页,从无到有

题外话:前段时间逛博客园,偶然看到一个大神写的帖子:上层人员决定底层人员所用的技术,来论述了一下为什么java工资会大致比.net高,没办法因为这两个技术就像两个帝国一样,以至于平常的互撕完全是站在利益的角度上,没办法!他说如果.net的管理人员多了,那么.net所用的人也就多了,为此,又让我想到了开源的分享的真正意义:为了自己的技术,为了阐述自己写完这个项目的兴奋,同时每一个开源,也会让属于这个技术的人多一点提升.这就不是1+1=2那么简单了:理想的状态就是,高层管理人员越多,开源分享的越多,

C# 分页方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace System.Web.Mvc //注意修改为与HtmlHelper相同的命名空间{ /// <summary> /// 静态 分页方法 /// </summary> public static class MyHtmlHelper { //HtmlHelper的扩展

MVC 分页获取数据 及点选按钮

@model PagedList<Lyxm.Entity.Suggestion>@using Webdiyer.WebControls.Mvc <div>    <ul class="breadcrumb">        <li>            @Html.ActionLink("基础维护", "", "")            <span class=&quo

.net分页方法

//记录分页的总条数 DX.Model.Container.PagerDataContainer Container = new DX.Model.Container.PagerDataContainer(); int ActualPageSize = PageSize; #region 总页数 int total = 0; DataSet dsTotal = new DataSet(); StringBuilder sbTotal = new StringBuilder(); if (User

ASP.NET MVC 分页MvcPager

ASP.NET MVC 分页MvcPager 开源框架  admin  8个月前 (08-20)  1484浏览 他连续12年获得微软MPV称号,几年前,他写的ASP.NET分页控件,被很多.NET开发人员使用,现在他又写了名为MvcPager的分页扩展,并免费开源,支持MVC通用分页,与EF完美结合,支持AJAX分页,简单灵活,提供多个演示案例,是迄今为止最好的MVC分页方式,推荐各位ASP.NET MVC开发者使用. 分页是每个项目必须面对的技术点,不好的分页不但体验不好,而且会影响系统的整