MVC默认路由如何实现分页
创始人
2024-11-28 10:20:39
0次

A.效果(这里用了bootstrap的样式)

MVC默认路由如何实现分页

B.分析,知识点

a.分页通常由一下几个属性组成(当前页,总条数,分页记录数,路由地址),由此四项基本就能实现分页了,在加上一个控制样式的参数

b.各种数字的验证,计算总页数(如果总条数和分页记录数不能整除,那么最后相除的结果再+1)

c.下一页和上一下的按钮是零界点,需要判断是否是最后一页或者第一页来显示当前页数的继续增加或者减小

d.因为需要在cshtml文件中展示分页的效果,所以需要用到HtmlHelper扩展方法;扩展方法这里简单说下注意项:

.关键词this

.扩展方法对应的clas必须静态,该方法本身也是静态

.扩展方法对应的class后缀一般是Extensions修饰

e.试图页面@Html.PageExtend直接调用分页方法

C.代码展示

a.分页方法实现类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace PagerExtend
{
 public static class HtmlHelperExtensions
 {

  #region 分页扩展 PageExtend

  /// 
  /// 分页option属性
  /// 
  public class MoPagerOption
  {
   /// 
   /// 当前页 必传
   /// 
   public int CurrentPage { get; set; }
   /// 
   /// 总条数 必传
   /// 
   public int Total { get; set; }

   /// 
   /// 分页记录数(每页条数 默认每页15条)
   /// 
   public int PageSize { get; set; }

   /// 
   /// 路由地址(格式如:/Controller/Action) 默认自动获取
   /// 
   public string RouteUrl { get; set; }

   /// 
   /// 样式 默认 bootstrap样式 1
   /// 
   public int StyleNum { get; set; }
  }

  /// 
  /// 分页扩展方法
  /// 
  /// html试图
  /// 分页属性
  /// html样式
  public static MvcHtmlString PageExtend(this HtmlHelper helper, MoPagerOption option)
  {

   if (option.PageSize <= 0) { option.PageSize = 15; }
   if (option.CurrentPage <= 0) { option.CurrentPage = 1; }
   if (option.Total <= 0) { return MvcHtmlString.Empty; }

   //总页数
   var totalPage = option.Total / option.PageSize + (option.Total % option.PageSize > 0 ? 1 : 0);
   if (totalPage <= 0) { return MvcHtmlString.Create("分页异常"); }
   //当前路由地址
   if (string.IsNullOrEmpty(option.RouteUrl))
   {

    option.RouteUrl = helper.ViewContext.HttpContext.Request.RawUrl;
    if (!string.IsNullOrEmpty(option.RouteUrl))
    {

     var lastIndex = option.RouteUrl.LastIndexOf("/");
     option.RouteUrl = option.RouteUrl.Substring(0, lastIndex);
    }
   }
   option.RouteUrl = option.RouteUrl.TrimEnd('/');

   //构造分页样式
   var sbPage = new StringBuilder(string.Empty);
   switch (option.StyleNum)
   {
    case 2:
     {
      break;
     }
    default:
     {
      #region 默认样式

      sbPage.Append("");
      #endregion
     }
     break;
   }


   return MvcHtmlString.Create(sbPage.ToString());
  }
  #endregion
 }
}

b.View测试调用

@using PagerExtend
@model IEnumerable


 Url:@ViewBag.Url

 @foreach (var item in Model)
 {
  
   
   
   
  
 }
@item.Title@item.Author@item.CreateTime
@Html.PageExtend(ViewBag.PagerOption as HtmlHelperExtensions.MoPagerOption)

c.Controller测试

using PagerExtend;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace XinSheng.Api.Controllers
{

 [Serializable]
 public class MoAirticle
 {

  public string Title { get; set; }
  public string Author { get; set; }
  public DateTime CreateTime { get; set; }
 }

 public class HomeController : Controller
 {

  public ActionResult Index(int id)
  {
   ViewBag.Title = "测试 分页";

   List moAirticles = new List();

   for (int i = 1; i < 50; i++)
   {

    moAirticles.Add(new MoAirticle
    {
     Author = "神牛步行" + i,
     CreateTime = DateTime.Now,
     Title = "博客园之" + i
    });
   }
   ViewBag.Url = Request.RawUrl;

   //初始化分页基础信息
   var option = new HtmlHelperExtensions.MoPagerOption
   {

    CurrentPage = id,
    PageSize = 15,
    Total = moAirticles.Count
   };
   //动态传递分页属性
   ViewBag.PagerOption = option;

   var articles = moAirticles.Skip((option.CurrentPage - 1) * option.PageSize).Take(option.PageSize).ToList();
   return View(articles);
  }
 }
}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...