, 介绍 这篇文章将解释如何在asp.net mvc核心应用程序中进行分页,目标是enity框架,并使用jquery模板simplepagin .js。 我的一个应用程序,我必须实现分页,有很多客户端jquery模板可用,但问题是如何在我们的应用程序合并所有这些?这个演示将介绍进行分页所需的所有比特和价格。 提供了一个泛型类来处理所有计算,包括从app.config文件读取页面大小。 背景 这个演示不是关于如何创建一个新的asp.net核心mvc项目或任何编程语言。我急于解决一个一般性问题。 使用的代码 代码将执行以下操作。 使用分页助手从源获取记录(硬编码)来计算并获得请求的页面,将页面传递给视图,请求simplepagin .js来呈现分页器完成!! 创建一个新的。net核心mvc应用程序,其项目文件如下所示 隐藏,复制Code

<ProjectSdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
<OutputType>exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<ApplicationIcon/>
<OutputTypeEx>exe</OutputTypeEx>
<StartupObject/>
</PropertyGroup>
<ItemGroup>
<ContentInclude="wwwroot\scripts\site.js"/>
</ItemGroup>
<ItemGroup>
<PackageReferenceInclude="Microsoft.AspNetCore.Server.IISIntegration"Version="1.1.2"/>
<PackageReferenceInclude="Microsoft.AspNetCore.Server.Kestrel"Version="1.1.2"/>
<PackageReferenceInclude="Microsoft.AspNetCore.StaticFiles"Version="1.1.2"/>
<PackageReferenceInclude="Microsoft.AspNetCore.Mvc"Version="1.1.3"/>
<PackageReferenceInclude="Microsoft.Extensions.Configuration.FileExtensions"Version="1.1.2"/>
<PackageReferenceInclude="Microsoft.Extensions.Configuration.Json"Version="1.1.2"/>
<PackageReferenceInclude="Microsoft.AspNetCore.Diagnostics"Version="1.1.2"/>
</ItemGroup>
</Project

, cs被设置为运行mvc 隐藏,收缩,复制Code

public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json"); Configuration = builder.Build();
} private IConfiguration Configuration { get; set; } public void ConfigureServices(IServiceCollection service)
{
service.AddMvc(); service.AddSingleton(Configuration)
.AddTransient(typeof(IPageHelper<>), typeof(PageHelper<>))
.AddSingleton<IPageConfig, PageConfig>();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseDeveloperExceptionPage(); app.UseStaticFiles(); app.UseMvc(config => config.MapRoute("default", "{controller=Home}/{action=Index}/{id?}")); app.Run(handler => handler.Response.WriteAsync("Page not find."));
}

用于显示雇员列表的主控制器 HomeController将接受一个构造函数,它将帮助准备寻呼机。通常pageHelper和_dbContext应该在业务层中,为了可读性,我直接在控制器中使用它。 隐藏,收缩,复制Code

public class HomeController : Controller
{
private EmployeeDbContext _dbContext;
private IPageHelper<EmployeeViewModel> _pageHelper; public HomeController(IPageHelper<EmployeeViewModel> pageHelper)
{
_dbContext = new EmployeeDbContext();
_pageHelper = pageHelper;
} [HttpGet]
public IActionResult Index(int pageNumber = 1)
{
var allEmployees = _dbContext.GetEmployees(); var result = _pageHelper.GetPage(allEmployees, pageNumber); var employees = new EmployeePageViewModel
{
Employees = result.Items,
Pager = result.Pager
}; return View(employees);
}
}

, 定义了三个接口,其中iresultset>将是GetPage()的返回类型 , 隐藏,复制Code

public interface IPageHelper<T>
{
IResultSet<T> GetPage(IQueryable<T> items, int pageNumber);
} public interface IPageConfig
{
int PageSize { get; }
} public interface IResultSet<T>
{
IEnumerable<T> Items { get; set; } Pager Pager { get; }
}

, 以及用于存储页面的模型 , 隐藏,复制Code

public class Pager
{
public int NumberOfPages { get; set; } public int CurrentPage { get; set; } public int TotalRecords { get; set; }
}

, 最后是ipagehelpertgt的实现。 请注意,我们接受你的要求。可以更改为ienumerable> 隐藏,收缩,复制Code

public class PageHelper<T> : IPageHelper<T>
{
private readonly IPageConfig _pageConfig; public PageHelper(IPageConfig pageConfig)
{
_pageConfig = pageConfig;
} public IResultSet<T> GetPage(IQueryable<T> items, int pageNumber)
{
var numberOfRecords = items.Count();
var numberOfPages = GetPaggingCount(numberOfRecords, _pageConfig.PageSize); if (pageNumber == 0) { pageNumber = 1; } var pager = new Pager
{
NumberOfPages = numberOfPages,
CurrentPage = pageNumber,
TotalRecords = numberOfRecords
}; var countFrom = _countFrom(_pageConfig.PageSize, pageNumber); var resultSet = new ResultSet<T>
{
Pager = pager,
Items = items.Skip(countFrom).Take(_pageConfig.PageSize)
}; return resultSet;
} private readonly Func<int, int, int> _countFrom =
(pageSize, pageNumber) => pageNumber == 1 ? 0 : (pageSize * pageNumber) - pageSize; private static int GetPaggingCount(int count, int pageSize)
{
var extraCount = count % pageSize > 0 ? 1 : 0;
return (count < pageSize) ? 1 : (count / pageSize) + extraCount;
} public class ResultSet<T> : IResultSet<T>
{
public IEnumerable<T> Items { get; set; }
public Pager Pager { get; set; }
}
}

, 添加一个凉亭。并添加所需的依赖项。 隐藏,复制Code

"dependencies": {
"jquery": "3.2.1",
"simplePagination.js": "*"
}

, 将simplepagin .js和jquery.min.js的引用提供给cshtml,并使用foreach循环所有记录 分页定义在ul id="emp-pagination" class=" Pagination "></ul> 这个演示只包含一个视图,所以所有的引用都添加在这里。 隐藏,收缩,复制Code

@model PagerDemo.ViewModels.EmployeePageViewModel

<scriptsrc="~/lib/jquery/dist/jquery.min.js"></script>
<linkhref="~/lib/simplePagination.js/simplePagination.css"rel="stylesheet"/>
<scriptsrc="~/lib/simplePagination.js/jquery.simplePagination.js"></script>
<scriptsrc="~/scripts/site.js"></script>
<table>
<tr>
<th>Id</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
@foreach (var emp in Model.Employees)
{
<tr>
<td>@emp.Id</td>
<td>@emp.FirstName</td>
<td>@emp.LastName</td>
</tr>
}
</table>
<ulid="emp-pagination"class="pagination"></ul> <inputasp-for="Pager.NumberOfPages"type="hidden"id="hdnTotalNumberOfPages"value="@Model.Pager.NumberOfPages"/>
<inputasp-for="Pager.CurrentPage"type="hidden"id="hdnCurrentPage"value="@Model.Pager.CurrentPage"/>

接下来,我们将告诉somplepagin .js id=" empty -pagination"是一个分页器。请注意#hdnTotalNumberOfPages和#hdnCurrentPage是从视图中获取的(隐藏字段) 隐藏,复制Code

$(function () {
$('#emp-pagination').pagination({
pages: $('#hdnTotalNumberOfPages').val(),
currentPage: $('#hdnCurrentPage').val(),
itemsOnPage: 10,
cssStyle: 'light-theme',
onPageClick: function (pageNo) {
var url = "/Home/Index?pageNumber=" + pageNo;
window.location.href = url;
},
hrefTextSuffix: '',
selectOnClick: true
});
});

, 当我们运行应用程序时,结果将是这样的。 历史 -- , , 本文转载于:http://www.diyabc.com/frontweb/news19947.html

asp.net mvc核心、实体框架和simplepagin .js中的分页的更多相关文章

  1. Asp.net MVC Razor输出字符串方法(js中嵌入razor)

    @{ Model p = new Model(); //输出名称和年龄 //1.第一种方式 @:姓名=@p.Name //2.第二中方式 <text>年龄=</text>p.A ...

  2. ASP.NET MVC企业级项目框架

    ASP.NET MVC企业级项目框架 MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,搭建过程内容比较多,结合了抽象工厂 ...

  3. ExceptionLess ASP.NET MVC 异常日志框架

    Exceptionless 一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET MVC ...

  4. 【MVC 1】MVC+EF实体框架—原理解析

    导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得 ...

  5. ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript 。

    一个简单的 ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript . 前言 TypeScript 是一种由微软开发的自由和开源的编程语言.它是JavaS ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  7. 如鹏网学习笔记(十五)ASP.NET MVC核心基础笔记

    一.ASP.Net MVC简介 1,什么是ASP.NET MVC? HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大.工作量大.因此提供了ASP. ...

  8. asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

    学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...

  9. 基于ASP.NET MVC的ABP框架入门学习教程

    为什么使用ABP 我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋.一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度. 随着软件开发经验的不断增加, ...

随机推荐

  1. 你不知道的JavaScript笔记----对象

    对象: 1.定义对象属性 属性描述符(也称为:数据描述符) Object.defineProperty(Object,PropertyName,{ value: 6, writable: true, ...

  2. 简介&目录

    欢迎来到 MK 的博客鸭~ 这里会被我用来发一些OI算法.数据结构的学习笔记,各种游记和其他的一些内容,希望大家多多关照! ε≡٩(๑>₃<)۶ 然后目录就也放这里⑧:

  3. Mockito在JUnit测试中的使用

    Mockito是一种用于替代在测试中难以实现的成员,从而让testcase能顺利覆盖到目标代码的手段.下面例子将展示Mockito的使用. 完整代码下载:https://files.cnblogs.c ...

  4. boot 项目启动报Cannot datermine embedded database driver class for database type NONE

    部署boot项目时报Cannot datermine embedded database driver class for database type NONE数据库链接什么的也都没有问题,经过百度 ...

  5. 360浏览器最小字号12的坑 -彻底搞清rem

    之前做响应式网站,使用rem作为单位.因为浏览器的默认字号是16px,设置html {font-size: 62.5%; /*10 ÷ 16 × 100% = 62.5%*/},刚好1rem =10p ...

  6. Coneology(POJ 2932)

    原题如下: Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4937   Accepted: 1086 D ...

  7. python之map

    python之Map函数   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # map()函数使用举例 # 功能: ...

  8. [Java并发编程之美]第1章 线程基础 补充知识

    1.2线程创建与运行 创建线程有三种方式: 继承Thread类并重写run方法: 实现Runnable接口的run方法,new Thread时将该类对象作为参数传入: 实现Callable接口的cal ...

  9. 分布式系统监视zabbix讲解三之用户和用户组

    概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...

  10. ScheduledExecutorService定时任务学习

    scheduleAtFixedRate :每隔Xs执行任务 scheduleWithFixedDelay :上轮任务结束后的Xs后执行下次任务 如下是测试代码,就是at和with方法不同 public ...