72 lines
2.8 KiB
C#
72 lines
2.8 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using System.Text;
|
|
|
|
namespace ZelWiki.Library
|
|
{
|
|
public static class PageSelectorGenerator
|
|
{
|
|
public static string Generate(QueryString? queryString, int? totalPageCount)
|
|
=> Generate(string.Empty, "page", QueryStringConverter.ToDictionary(queryString), totalPageCount);
|
|
|
|
public static string Generate(string queryToken, IQueryCollection? queryString, int? totalPageCount)
|
|
=> Generate(string.Empty, queryToken, QueryStringConverter.ToDictionary(queryString), totalPageCount);
|
|
|
|
public static string Generate(string url, string queryToken, Dictionary<string, string>? queryString, int? totalPageCount)
|
|
{
|
|
var sb = new StringBuilder();
|
|
int currentPage = 1;
|
|
|
|
var firstPage = QueryStringConverter.Clone(queryString);
|
|
if (firstPage.TryGetValue(queryToken, out var currentPageString))
|
|
{
|
|
currentPage = int.Parse(currentPageString);
|
|
}
|
|
|
|
firstPage.Remove(queryToken);
|
|
firstPage.Add(queryToken, "1");
|
|
|
|
var prevPage = QueryStringConverter.Clone(firstPage);
|
|
prevPage.Remove(queryToken);
|
|
prevPage.Add(queryToken, $"{currentPage - 1}");
|
|
|
|
var nextPage = QueryStringConverter.Clone(firstPage);
|
|
nextPage.Remove(queryToken);
|
|
nextPage.Add(queryToken, $"{currentPage + 1}");
|
|
|
|
var lastPage = QueryStringConverter.Clone(firstPage);
|
|
lastPage.Remove(queryToken);
|
|
lastPage.Add(queryToken, $"{totalPageCount}");
|
|
|
|
if ((totalPageCount ?? 0) > 1 || currentPage > 1)
|
|
{
|
|
sb.Append($"<center>");
|
|
if (currentPage > 1)
|
|
{
|
|
sb.Append($"<a href=\"{url}?{QueryStringConverter.FromCollection(firstPage)}\"><< 首页</a>");
|
|
sb.Append(" | ");
|
|
sb.Append($"<a href=\"{url}?{QueryStringConverter.FromCollection(prevPage)}\">< 上一页</a>");
|
|
}
|
|
else
|
|
{
|
|
sb.Append($"<< 首页 | < 上一页");
|
|
}
|
|
sb.Append(" | ");
|
|
|
|
if (currentPage < totalPageCount)
|
|
{
|
|
sb.Append($"<a href=\"{url}?{QueryStringConverter.FromCollection(nextPage)}\">下一页 ></a>");
|
|
sb.Append(" | ");
|
|
sb.Append($"<a href=\"{url}?{QueryStringConverter.FromCollection(lastPage)}\">尾页 >></a>");
|
|
}
|
|
else
|
|
{
|
|
sb.Append("下一页 > | 尾页 >>");
|
|
}
|
|
sb.Append($"</center>");
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|