接上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>分页功能</title>
<script src="js/jquery-1.11.0.js"></script>
<style>
*{margin:0;padding:0}
#paging{
width:100%;
height:auto;
margin-top:100px;
}
/* 内容样式 */
#paging .paging-content{
width:100%;
height:auto;
text-align: center;
}
#paging .paging-content .paging-content-text{
width:100%;
height:50px;
line-height:50px;
}
/*分页样式*/
#paging .paging-footer{
width:100%;
height:50px;
line-height:50px;
font-size:20px;
color:#fff;
background-color:#d3d3d3;
}
#paging .paging-footer .paging-footer-content{
text-align:center;
margin:auto;
}
#paging .paging-footer-content .content-text{
display:inline-block;
margin-right:15px;
}
#paging .paging-footer-content .content-text button{
color:#fff;
font-size:20px;
background-color: #d3d3d3;
outline: none;
border:none;
cursor:pointer;
}
#paging .paging-footer-content .content-text button:hover{
color:#2d8cf0;
}
#paging .paging-footer-content .content-text .upward{
cursor:no-drop;
}
#paging .paging-footer-content .content-text span{
color:#d3d3d3;
font-size:16px;
background-color:#fff;
border-radius:8px;
padding:1px 15px;
margin:0 10px;
}
#paging .paging-footer-content .content-text input{
width:30px;
font-size:16px;
background-color:#fff;
border-radius:8px;
padding:1px 15px;
margin:0 10px;
outline: none;
border:none;
}
</style>
</head>
<body>
<div id="paging">
<div class="paging-content">
</div>
<div class="paging-footer">
<div class="paging-footer-content">
<div class="content-text">
<button class="upward" disabled="disabled">上一页</button>
</div>
<div class="content-text">
第<span class="nowPage">1</span>页
</div>
<div class="content-text">
<button class="down">下一页</button>
</div>
<div class="content-text">
跳转<input class="pageVal" type="text" value="1" onKeyUp="value=value.replace(/\D/g,'')"/>页
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
//页面加载初始化数据
var page = 1; //请求页数
var pageSize = 10; //每页返回数据条数
getData();
function getData(){
$.ajax({
type : 'GET',
url : 'datas.json',
data : {
page : page,
pageSize : pageSize
},
dataType: "json",
success: function(data){
//var res = data.data;
console.log(data);
$('#paging .paging-content').html(''); //每次请求清空原来的数据
$.each(res,function(index,res){
pagingContent =
'<div class="paging-content-text">'+res.bumenname+'</div>'
//将请求的数据append到页面上
$('#paging .paging-content').append(pagingContent);
})
}
});
}
//分页
var upwardPage = $(' #paging .content-text .upward'); //上一页
var downPage = $(' #paging .content-text .down'); //下一页
var nowPage = $(' #paging .content-text .nowPage'); //当前页数
var nowPageNum = Number(nowPage.html());
var pageVal = $(' #paging .content-text .pageVal'); //跳转页数
//上一页
upwardPage.click(function(){
nowPageNum = page;
if(nowPageNum > 1){
nowPageNum --;
}else{
nowPageNum == 1;
}
if(nowPageNum == 1){
upwardPage.attr('disabled',true);
upwardPage.css('cursor','no-drop');
nowPage.html(1);
pageVal.val(1);
page = nowPageNum;
getData();
}
else{
nowPage.html(nowPageNum);
pageVal.val(nowPageNum);
page = nowPageNum;
getData();
}
})
//下一页
downPage.click(function(){
nowPageNum = page;
upwardPage.attr('disabled',false);
upwardPage.css('cursor','pointer');
nowPageNum++;
nowPage.html(nowPageNum);
pageVal.val(nowPageNum);
page = nowPageNum;
getData();
})
//跳转
//失去焦点
pageVal.blur(function(){
var pageval = Number(pageVal.val());
var nowpage = Number(nowPage.html());
//如果失去焦点前后的值一样,不进行数据请求
if(pageval != nowpage){
//小于1跳转第一页
if(pageval > 1){
upwardPage.attr('disabled',false);
upwardPage.css('cursor','pointer');
nowPage.html(pageval);
page = pageval;
getData();
}else{
upwardPage.attr('disabled',true);
upwardPage.css('cursor','no-drop');
nowPage.html(1);
pageVal.val(1);
page = 1;
getData();
}
}
})
//回车
pageVal.keyup(function(event){
if(event.keyCode == 13){
var pageval = Number(pageVal.val());
var nowpage = Number(nowPage.html());
//如果失去焦点前后的值一样,不进行数据请求
if(pageval != nowpage){
//小于1跳转第一页
if(pageval > 1){
upwardPage.attr('disabled',false);
upwardPage.css('cursor','pointer');
nowPage.html(pageval);
page = pageval;
getData();
}else{
upwardPage.attr('disabled',true);
upwardPage.css('cursor','no-drop');
nowPage.html(1);
pageVal.val(1);
page = 1;
getData();
}
}
}
})
})
</script>
</body>
</html>
效果图:(内容倒是后换个地址就可以显示)
水平有限,欢迎指教。
本文中,让我们尝试构建自定义 HTML Hepler以在 .NET Core MVC 应用程序中提供分页。首先对不熟悉的人简单介绍一下,什么是HTML Helper(助手):
在Web应用程序中,如果要显示大量记录,则需要提供分页。在本文中,我们通过创建自定义 HTML Helper 在 .NET Core MVC 应用程序中实现分页。为了简单起见,我们只能使用数字来表示数据。
假设我们需要在多页中显示 55 条记录,每页有 10 个项目,如上所示。
打开 Visual Studio 2019 > 创建 .NET Core MVC 应用程序,如下所示。
项目命名为 HTMLHelpersApp。
选择 .NET 框架版本。
创建所需的模型和帮助文件。
在 Number.cs 中添加代码。该模型捕获用户输入。它只有一个属性:“InputNumber”。
using System;
using System.ComponentModel.DataAnnotations;
namespace HTMLHelpersApp.Models
{
public class Number
{
//validation for required, only numbers, allowed range-1 to 500
[Required(ErrorMessage = "Value is Required!. Please enter value between 1 and 500.")]
[RegularExpression(@"^\d+$", ErrorMessage = "Only numbers are allowed. Please enter value between 1 and 500.")]
[Range(1, 500, ErrorMessage = "Please enter value between 1 and 500.")]
public int InputNumber = 1;
}
}
现在让我们添加一个公共类 PageInfo.cs。创建新文件夹 Common 并添加 PageInfo.cs 类。
在 PageInfo.cs 中添加代码:
根据总项目数和每页项目数,计算页面的总页数、第一个项目和最后一个项目。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace HTMLHelpersApp.Common
{
public class PageInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public PageInfo()
{
CurrentPage = 1;
}
//starting item number in the page
public int PageStart
{
get { return ((CurrentPage - 1) * ItemsPerPage + 1); }
}
//last item number in the page
public int PageEnd
{
get
{
int currentTotal = (CurrentPage - 1) * ItemsPerPage + ItemsPerPage;
return (currentTotal < TotalItems ? currentTotal : TotalItems);
}
}
public int LastPage
{
get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); }
}
}
}
现在我们来到最重要的部分:创建自定义 HTML 助手。
public static IHtmlContent PageLinks(this IHtmlHelper htmlHelper, PageInfo pageInfo, Func<int, string> PageUrl)
5.取2个参数
使用标签构建器创建锚标签。
TagBuilder tag = new TagBuilder("a");
Add attributes
tag.MergeAttribute("href", hrefValue);
tag.InnerHtml.Append(" "+ innerHtml + " ");
样式也可以用作属性。
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
using System;
using System.Text;
namespace HTMLHelpersApp.Common
{
public static class PagingHtmlHelpers
{
public static IHtmlContent PageLinks(this IHtmlHelper htmlHelper, PageInfo pageInfo, Func<int, string> PageUrl)
{
StringBuilder pagingTags = new StringBuilder();
//Prev Page
if (pageInfo.CurrentPage > 1)
{
pagingTags.Append(GetTagString("Prev", PageUrl(pageInfo.CurrentPage - 1)));
}
//Page Numbers
for (int i = 1; i <= pageInfo.LastPage; i++)
{
pagingTags.Append(GetTagString(i.ToString(), PageUrl(i)));
}
//Next Page
if (pageInfo.CurrentPage < pageInfo.LastPage)
{
pagingTags.Append(GetTagString("Next", PageUrl(pageInfo.CurrentPage + 1)));
}
//paging tags
return new HtmlString(pagingTags.ToString());
}
private static string GetTagString(string innerHtml, string hrefValue)
{
TagBuilder tag = new TagBuilder("a"); // Construct an <a> tag
tag.MergeAttribute("class","anchorstyle");
tag.MergeAttribute("href", hrefValue);
tag.InnerHtml.Append(" "+ innerHtml + " ");
using (var sw = new System.IO.StringWriter())
{
tag.WriteTo(sw, System.Text.Encodings.Web.HtmlEncoder.Default);
return sw.ToString();
}
}
}
}
在“Models”文件夹中添加一个新类“ShowPaging.cs”。
using HTMLHelpersApp.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace HTMLHelpersApp.Models
{
public class ShowPaging
{
//validation for required, only numbers, allowed range-1 to 500
[Required(ErrorMessage = "Value is Required!. Please enter value between 1 and 500.")]
[RegularExpression(@"^\d+$", ErrorMessage = "Only positive numbers are allowed. Please enter value between 1 and 500.")]
[Range(1, 500, ErrorMessage = "Please enter value between 1 and 500.")]
public int InputNumber { get; set; }
public List<string> DisplayResult { get; set; }
public PageInfo PageInfo;
}
}
添加一个新控制器:“HTMLHelperController”
右键单击控制器文件夹并在上下文菜单中选择控制器。
选择“MVCController-Empty”。
在“HTMLHelperController”中添加代码。
using HTMLHelpersApp.Common;
using HTMLHelpersApp.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace HTMLHelpersApp.Controllers
{
public class HTMLHelperController : Controller
{
private const int PAGE_SIZE = 10;
public IActionResult Number()
{
return View();
}
public IActionResult ShowPaging(ShowPaging model, int page = 1, int inputNumber = 1)
{
if (ModelState.IsValid)
{
var displayResult = new List<string>();
string message;
//set model.pageinfo
model.PageInfo = new PageInfo();
model.PageInfo.CurrentPage = page;
model.PageInfo.ItemsPerPage = PAGE_SIZE;
model.PageInfo.TotalItems = inputNumber;
//Set model.displayresult - numbers list
for (int count = model.PageInfo.PageStart; count <= model.PageInfo.PageEnd; count++)
{
message = count.ToString();
displayResult.Add(message.Trim());
}
model.DisplayResult = displayResult;
}
//return view model
return View(model);
}
}
}
在 Views 文件夹中创建一个新文件夹“HTMLHelper”,并创建一个新视图“Number.cshtml”。
在“Number.cshtml”中添加代码。
@model HTMLHelpersApp.Models.Number
<h4>Number</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="ShowPaging" method="get">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<input asp-for="InputNumber" class="form-control"/>
</div>
<div class="form-group">
<input type="submit" value="Submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
同样,创建一个新视图“ShowPaging.cshtml”。
@model HTMLHelpersApp.Models.ShowPaging
@using HTMLHelpersApp.Common
<link rel="stylesheet" href ="~/css/anchorstyles.css"/>
<form>
<h4>Show Paging</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<dl class="row">
<dt class="col-sm-2">
<b>Number: </b> @Html.DisplayFor(model => model.InputNumber)
</dt>
<dd>
<a asp-action="Number">Change Number</a>
</dd>
</dl>
<div>
@if (Model != null && Model.DisplayResult != null)
{
<ul>
@foreach (var item in Model.DisplayResult)
{
<li>@Html.Raw(item)</li>
}
</ul>
<div>
@Html.PageLinks(@Model.PageInfo, x => Url.Action("ShowPaging",
new { page = x.ToString(), inputNumber = @Model.InputNumber }))
</div>
}
</div>
</form>
解决方案资源管理器如下所示:
在“startup.cs”中配置默认控制器和操作。
编译并运行应用程序,输入数字 35。
点击提交。
你会在底部看到分页,每页显示10个数字,一共4页,且每页都一个链接。
ordpress主题trans的首页模板的左侧文章列表,在上一节中,我们已经做了修改,实现了从wordpress的数据库中调用。但是,wordpress网站的文章肯定有很多很多,这时,如果把所有的文章都显示在同一个页面,这好像不太好,也不利于用户的浏览。所以,wordpress网站的后台可以设置每个页面显示多少篇文章,默认情况下,是每个页面显示10篇,剩下的文章列表,会以分页的形式显示。
在trans主题的静态模板中,我们没有做分页效果,所以,在本节中,我们不仅要添加分页的功能,还要添加分页的展示效果的CSS样式。那么,怎样给trans主题首页左侧的文章列表添加分页效果呢?
第一步:添加分页按钮的父标签。
为了整个页面的布局合理,我们给分页按钮添加一个父标签,代码如下:
< div class="left_page"></div>
第二步:添加分页代码。
从wordpress4.1版本开始,wordpress就为我们提供了一个非常好用的分页函数——the_posts_pagination(),而不再需要wordpress主题开发者们自己创建自定义的分页函数了,这也就是那么多人都在使用wordpress做网站的原因吧。
好了,不多说,我们直接在上面添加的父标签里添加如下PHP代码:
<?php
the_posts_pagination( array(
'mid_size' => 3, //当前页码数的 两边 显示3个页码。
'prev_text' =>'<', //上一页
'next_text' =>'>', //下一南
) );
?>
从上面的代码中,我们可以看出,the_posts_pagination()函数只有一个参数,这个参数是一个array数组。这个数组里可以包含有多个元素,这些元素的值我们都是可以修改的,如:我们可以把
'prev_text' =>'<' 改成 'prev_text' =>'上一页', 'next_text' =>'>' 改成 'next_text' =>'下一页'。
这时,我们再看trans主题首页的左侧底部,就可以看到分页数了,就是不太美观,如下图:
第三步:给分页添加css样式。
从上图中,我们可以看出,这个分页按钮实在是太难看了。为了让它变得美观,我们需要为它添加CSS样式代码。代码如下:
/*分页*/
.left_page{ float:left; padding:15px; background: #fff; width:100%; box-sizing:border-box; }
.left_page h2{ display:none; }
.left_page .nav-links a{ display:inline-block; padding:2px 5px; border:1px solid #ccc; }
.left_page .nav-links .current{ display:inline-block; padding:2px 5px; border:1px solid #ccc; background:#3571cc; color:#fff; }
.left_page .nav-links a:hover{ background:#3571cc; color:#fff; }
添加上这些CSS样式代码后,我们再到trans主题网站的首页看一下,这时的分页按钮就好看多了,如下图:
当前页面的页码显示为蓝底白字,鼠标光标移到哪真页码上,这个页码也会显示为蓝底白字,这样,在用户浏览时,会更加的友好。
好了,通过上面的操作,我们为wordpress主题trans的首页左侧添加了文章列表的分页效果。不做的时候,是不是觉得很难?但是,一旦做起来,是不是又觉得特别的简单?就是这样的感觉了,使用wordpress的好处,就在这里了,它很多事情都为我们想了,我们只需要把它拿来用就行了 。
*请认真填写需求信息,我们会在24小时内与您取得联系。