MVC 自定义组件 自定义HtmlHelper 分页控件

博主应朋友要求完成一个自定义分页组件,将代码分享出来供大家学习讨论。该组件使用简单,直接在页面调用即可,UI采用bootstrapUI,有其他需求可自行调整修改。

最近在找工作,然后朋友让帮忙弄一个自定义的分页组件,写完以后就把代码传过来了。大家可以一起学习讨论一下,做的比较陋鸡,忘大神指点一二

 

 

 

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

namespace CodeWebApi
{
    public static class MyHtmlHelper
    {
        /// <summary>
        /// 我的分页控件
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="PageIndex">当前页</param>
        /// <param name="PageSize">分页大小</param>
        /// <param name="AllCount">总页数</param>
        /// <param name="address">控制器</param>
        /// <param name="AspnetSize">显示分页数目</param>
        /// <returns></returns>
        public static MvcHtmlString MyAspnetPager(this HtmlHelper helper,
            int PageIndex,
            int PageSize,
            int AllCount,
            string address,
            int AspnetSize = 5)
        {
            int AllPage = AllCount / PageSize;

            AllPage += AllCount % PageSize > 1 ? 1 : 0;
            StringBuilder htmlBuilder = new StringBuilder();
            htmlBuilder.Append("<nav aria-label=\"Page navigation\">");
            htmlBuilder.Append("<ul class=\"pagination \">");
            if (PageIndex == 1)
            {
                htmlBuilder.Append("<li class=\"disabled\">");
                htmlBuilder.Append("<span aria-hidden=\"true\">&laquo;</span>");
                htmlBuilder.Append("</li>");
            }
            else
            {
                
                htmlBuilder.Append("<li><a href=\""+ address + "?page=1\" aria-label=\"Previous\"><span aria-hidden=\"true\">&laquo;</span></a></li>");
            }
            int MaxPage = AllPage;
            if (AllPage > AspnetSize)
            {
                if (PageIndex < AspnetSize / 2 + 1)
                {
                    MaxPage = AspnetSize;
                }
                else if (PageIndex > AllPage - AspnetSize / 2)
                {
                    MaxPage = AllPage;
                }
                else
                {
                    MaxPage = PageIndex + AspnetSize / 2;
                }
            }
            for (int i = MaxPage - AspnetSize + 1 < 1 ? 1 : MaxPage - AspnetSize + 1; i <= MaxPage; i++)
            {

                if (i == PageIndex)
                {
                    htmlBuilder.Append("<li class=\"active\"><span>" + i + "</span></li>");
                }
                else
                {
                    TagBuilder tagBuilder = new TagBuilder("a");
                                //回调参数我这就叫page 了,不喜欢自己可以改
                    tagBuilder.MergeAttribute("href", address + "?page=" + i);
                    tagBuilder.InnerHtml = i.ToString();
                    htmlBuilder.Append("<li>"+tagBuilder.ToString()+"</ li>");
                }
            }
            if (PageIndex == AllPage)
            {
                htmlBuilder.Append("<li class=\"disabled\">");
                htmlBuilder.Append("<span aria-hidden=\"true\">&raquo;</span>");
                htmlBuilder.Append("</li>");
            }
            else
            {
                htmlBuilder.Append("<li><a href=\"" + address + "?page=" + AllPage + "\" aria-label=\"Previous\"><span aria-hidden=\"true\">&raquo;</span></a></li>");
            }
            htmlBuilder.Append("</ ul>");
            htmlBuilder.Append("</ nav>");
            return MvcHtmlString.Create(htmlBuilder.ToString());
        }
    }
}

 使用也比较简单 直接在页面调用就行了

  @Html.MyAspnetPager(CurrenPage, PageSize, totleCount,"index", 8);
                      //当前页码    //单页数量  //总响应条数  //回调控制器 //分页按钮数量

 

有什么其它需求请自行调整 ,PS UI直接用的bootstrapUI  需要其它UI也可以自行编辑修改

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值