zoukankan      html  css  js  c++  java
  • MVC快速分页

    using System;
    
    namespace CWHomeWebSite.Models
    {
        public class PagingInfo
        {
            //项目总数量
            public int TotalItems { get; set; }
            //当前索引
            public int PageIndex { get; set; }
            //分页大小
            public int PageSize { get; set; }
            //页数
            public int PageCount
            {
                get
                {
                    return (int)Math.Ceiling((decimal)TotalItems / PageSize);
                }
            }
        }
    }

    创建视图对应的ViewModel

    using CWHomeWebSite.Data.Entities;
    using System.Collections.Generic;
    
    namespace CWHomeWebSite.Models
    {
        public class PostViewModel
        {
            //博客集合
            public IEnumerable<Post> Posts { get; set; }
            //分页参数
            public PagingInfo PagingInfo { get; set; }
        }
    }

    处理Controller视图方法

    public ActionResult Index(int pageIndex = 1, int pageSize = 2)
            {
                //获取当前分页数据集合
                var posts = this.repository.Posts
              .OrderBy(p=>p.UpdateTime) 
                    .Skip((pageIndex - 1) * pageSize)
                    .Take(pageSize);
    
                //将当前ViewModel传递给视图
                return View(new PostViewModel
                {
                    Posts = posts,
                    PagingInfo = new PagingInfo
                    {
                        TotalItems = this.repository.Posts.Count(),
                        PageIndex = pageIndex,
                        PageSize = pageSize
                    }
                });
            }

    在View中通过Html辅助器扩展方法处理PagingInfo

    using CWHomeWebSite.Models;
    using System;
    using System.Web.Mvc;
    
    
    namespace CWHomeWebSite.Helper
    {
        public static class PagingHelper
        {
            //HtmlHelper扩展方法,用于分页
            public static MvcHtmlString Pagination(this HtmlHelper html, PagingInfo pageInfo,Func<PagingInfo,string> pageLinks)
            {
                var htmlString = pageLinks(pageInfo);
                
                return MvcHtmlString.Create(htmlString);
            }
        }
    }
    @model CWHomeWebSite.Models.PostViewModel
    @using CWHomeWebSite.Helper
    
    @{
        ViewBag.Title = "主页";
    }
    
    <!-- 博客列表 -->
    <section id="one">
        <ul class="actions">
            @foreach (var post in Model.Posts)
            {
                <li>
                    <header class="major">
                        <h2>
                            @post.Title <br />
                            | @post.CreateTime.ToShortDateString()
                        </h2>
    
                        <p>@post.Description</p>
                        <ul class="actions">
                            <li>@Html.ActionLink("更多", "Detail", "Home", new { @post.PostId }, new { @class = "button" })</li>
                        </ul>
                    </header>
                    <hr />
                </li>
            }
    
        </ul>
    
        <!--分页代码-->
        @Html.Pagination(Model.PagingInfo, (info) =>
       {
           var pagingString = "<ul class="actions small">";
           for (var i = 1; i <= info.PageCount; i++)
           {
               if (i == info.PageIndex)
               {
                   pagingString += "<li><a class="special" href="#">" + i + "</a></li>";
               }
               else
                   pagingString += "<li><a class="normal" href="" + Url.Action("Index", new { pageIndex = i, pageSize = info.PageSize }) + "">" + i + "</a></li>";
           }
           pagingString += "</ul>";
           return pagingString;
       })
    
    </section>
    
    <!--最近作品-->
    @Html.Action("RecentWorks", "Work")

    url跳转:

    @Url.Action("Index", "Home", new { id=1})“生成的html是:”生成的url为: /Home/Index/1“

  • 相关阅读:
    ajax 中文乱码问题 主要是IE浏览器
    js 带省略号的分页源码及应用实例
    js iframe onload &line-height浏览器兼容问题
    Js 正则表达式特殊字符含义
    js prototype
    js call apply caller callee bind
    怎么查看一个网站是用什么语言编写的?
    ASP.NET之AreaRegistration
    产品经理
    程序猿全面充电10本书
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/5246486.html
Copyright © 2011-2022 走看看