具体使用如下:

前台部分:

@RenderPage("~/Views/Controls/_Pagebar.cshtml",

    new PageBar

    {

        pageIndex = Model.CurrentPageIndex,

        recordCount = Model.TotalItemCount,

        UpdateTargetId = "expList",//此处填写需要更新的div(或其他)容器的id

        pageSize=,

        DataFormId = "Submit_Expense"//此处填写需要提交的表单的id

})

需要新建一个PagerBar类,如下:

  /// <summary>

        /// 当前页码

        /// </summary>

        public int pageIndex;

        /// <summary>

        /// 记录总条目数

        /// </summary>

        public int recordCount;

        /// <summary>

        /// 每页显示记录的数量

        /// </summary>

        public int pageSize;

        /// <summary>

        /// 更新容器的ID

        /// </summary>

        public string UpdateTargetId;

        /// <summary>

        /// 表单ID

        /// </summary>

        public string DataFormId;

  /// <summary>

        /// 访问路由

        /// </summary>

        public string RouteUrl= HttpContext.Current.Request.Url.ToString();

pagebar

控件代码

@{
//异步ajax刷新
var pageBar = (PageBar)PageData.FirstOrDefault().Value;
int pageindex = pageBar.PageIndex-;
int spitindex = ;
int pageSize = pageBar.PageSize;
var pageCount = ;
int recordCount = pageBar.RecordCount;
int pagecount = recordCount % pageSize == ? recordCount / pageSize : recordCount / pageSize + ;
var routeUrl = pageBar.RouteUrl;
var updateTargetId = pageBar.UpdateTargetId;
var dataFormId = pageBar.DataFormId;
var pageLast = pageindex > ;
var pageNext = pageindex != pagecount;
}
<style type="text/css">
.disabled {
color: # !important;
}
.disabled {
cursor: not-allowed;
}
</style>
@if (pagecount > )
{
<div class="row" style="height: 80px; ">
<div class="col-md-8 col-sm-8">
<ul class="pagination"> <li calss="@pageLast">
@if (pageLast)
{
<a href="javascript:void(0)" onclick="pageSkip(@pageindex-1)">上页</a> }
else
{
<a href="javascript:void(0)" class="disabled">上页</a>
}
</li>
@{ spitindex = pageindex - pageSize;}
@if (spitindex > pageSize)
{
<li><a href="javascript:void(0)" onclick="pageSkip(1)"></a> </li>
<li><a href="javascript:void(0)" onclick="pageSkip(@spitindex - 2)">...</a> </li>
}
else
{
for (int i = ; i < spitindex; i++)
{
<li><a href="javascript:void(0)" onclick="pageSkip(@i)">@Html.Raw(i + )</a> </li>
}
}
@for (int i = pageindex - ; i < pageindex; i++)
{
if (i >= pageindex || i < )
{
continue;
}
<li><a href="javascript:void(0)" onclick="pageSkip(@i)">@Html.Raw(i + )</a> </li>
}
<li class="active"><a href="javascript:void(0)" id="selectpage"><b>@Html.Raw(pageindex + )</b> </a></li>
@for (int i = pageindex + ; i < pagecount; i++)
{
if (i >= pageindex + pageCount)
{
break;
}
<li><a href="javascript:void(0)" onclick="pageSkip(@i+1)">@Html.Raw(i + )</a> </li>
}
@{ spitindex = pageindex + pageCount; }
@if (pagecount - pageSize > spitindex)
{
<li><a href="javascript:void(0)" onclick="pageSkip(@spitindex + 2)">...</a> </li>
<li><a href="javascript:void(0)" onclick="pageSkip(@pagecount - 1)">@pagecount</a> </li>
}
else
{
for (int i = spitindex; i < pagecount; i++)
{
<li><a href="javascript:void(0)" onclick="pageSkip(@i)">@Html.Raw(i + )</a> </li>
}
}
<li>
@if (pageNext)
{
<a href="javascript:void(0)" onclick="pageSkip(@pageindex + 1)">下页</a>
}
else
{
<a href="javascript:void(0)" class="disabled">下页</a>
}
</li> </ul>
</div>
<div class="col-md-2 col-sm-2">
<div class="input-group" style="margin: 20px 0">
<input type="text" id="pageIndexBox" class="form-control input-sm" />
<span class="input-group-btn"><button class="btn btn-primary btn-sm" onclick="goToPage()">跳转</button></span>
</div>
</div>
<div class="col-md-2 col-sm-2" style="line-height: 70px; text-align:right;">共 @pagecount 页&nbsp; @recordCount 条记录</div>
</div>
}
<script type="text/javascript"> function pageSkip(pageIndex) {
var requestUrl = '@routeUrl';
var formData = $("#@dataFormId").serialize() + "&pageIndex=" + pageIndex;
//debugger
$.post(requestUrl, formData, function (pageobj) {
$("#@updateTargetId").html(pageobj);
}, "html");
} function goToPage() {
var pageIndex = $("#pageIndexBox").val();
pageSkip(pageIndex);
}
</script>

后台部分:

采用的是MVCPager插件,暂未开发自己的插件。

mvc 封装控件使用mvcpager的更多相关文章

  1. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件

    类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...

  2. mvc 日历控件

    第二个是日历控件,在网上查了一个普通的日历控件,也生成了下拉的日历样子,但是一些脚本比如选择年月,需要一些时间,最后只好套用了My97 DatePicker,这样以来其实简单多了. 第一步:下载 My ...

  3. MVC通用控件库展示-MVC4.0+WebAPI+EasyUI+Knockout--SNF快速开发平台3.0

    在我们开发中怎么才能提高效率,就是要有大量的公共组件(控件)可以直接使用而不用自己再开发一遍,既然是公共控件那也得简单实用才行.下面就介绍一下SNF-MVC当中的控件库. 总体控件库展示: 1.通用用 ...

  4. wheelView实现滚动选择 三方开源的封装控件 spannableString autofitTextView、PinnedSectionListView SwipeListView等等

    wheelView多用于popupwindow用来滚动选择条目 github上的开源三方控件     spannableString   autofitTextView.PinnedSectionLi ...

  5. 一步一步学Silverlight 2系列(8):使用样式封装控件观感

    述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  6. WPF封装控件时 检测是否在设计模式中

    原文:WPF封装控件时 检测是否在设计模式中 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Vblegend_2013/article/detail ...

  7. 9.2.3 .net core 通过TagHelper封装控件

    .net core 除了继续保留.net framework的HtmlHelper的写法以外,还提供了TagHelper和ViewComponent方式生成控件. 我们本节说的是使用TagHelper ...

  8. mvc file控件无刷新异步上传操作

    前言 上传文件应该是很常见必不可少的一个操作,网上也有很多提供的上传控件.今天遇到一个问题:input控件file无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下.主要分三个部分:上传 ...

  9. AceAdmin In MVC之控件

    AceAdmin有很多Html控件,而下载下来之后全部混杂在一起,想用一个控件有时得调整半天,干脆整理出一个版本,而且结合起来MVC的封装.以后就不用一个js css的调了. 在MVC中Html的控件 ...

随机推荐

  1. OpenGL chapter3 基础渲染

    3.1 基础图形管线 三种向OpenGl着色器传递渲染数据的方法:属性,Uniform和纹理.3.2 创建坐标系 3.2.1 正投影 GLFrustum::SetOrthographic(⋯⋯): 3 ...

  2. sqoop操作之ETL小案例

    Extraction-Transformation-Loading的缩写,中文名称为数据提取.转换和加载.将数据从ORACLE中抽取数据,经过hive进行分析转换,最后存放到ORACLE中去. 本案例 ...

  3. 理解prototype

    从别人的博客里面盗了2张图,这2张图将对象/实例/prototype/__proto__/constructor之间的关系描绘的很清楚. 1.prototype 为 function的属性,实例化的对 ...

  4. express处理跨域问题,中间件 CORS

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 1.不用中间件的话可以这样写: app.all('*', func ...

  5. PYTHON实现识别图片

    自学Python3第5天,今天突发奇想,想用Python识别图片里的文字.没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定 #作者微信:2501902696 from PIL imp ...

  6. 黑盒测试用例设计——PICT(QQ实践)

     以QQ的状态设置来做一次实践.QQ用户可以对如下的状态方面的设置.后两张图是登录后的状态的可选项和鼠标键盘无动作后将状态切换至的可选项.默认的自动回复有三种,默认的快捷回复有四种.对于自动回复和快捷 ...

  7. centos的安装和下载

    https://blog.csdn.net/risen16/article/details/50737948

  8. delphi 加密 XOR

    From  http://www.delphigeist.com/2009/09/text-encryption-with-xor.html Text encryption with XOR   Ev ...

  9. 机器学习入门-随机森林预测温度-不同参数对结果的影响调参 1.RandomedSearchCV(随机参数组的选择) 2.GridSearchCV(网格参数搜索) 3.pprint(顺序打印) 4.rf.get_params(获得当前的输入参数)

    使用了RamdomedSearchCV迭代100次,从参数组里面选择出当前最佳的参数组合 在RamdomedSearchCV的基础上,使用GridSearchCV在上面最佳参数的周围选择一些合适的参数 ...

  10. inline和inline-block的间隙问题

    我们在前端布局的时候,会偶尔发现,在具有inline/inline-block属性的元素间存在一小段间隙,网上有些文章说这个间隙是6px,但我觉得应该是一个空格的宽度. 这里以inline-block ...