using System.Collections.Generic;
using Microsoft.AspNetCore.Routing;
namespace Dpz.Core.Web.Pager;
/// <summary>
/// 分页控件相关选项和设置的对象。
/// </summary>
public class PagerOptions
{
/// <summary>
/// 用默认属性值初始化PagerOptions对象。
/// </summary>
public PagerOptions()
{
AutoHide = true;
PageIndexParameterName = "pageindex";
NumericPagerItemCount = 10;
AlwaysShowFirstLastPageNumber = false;
ShowPrevNext = true;
PrevPageText = "<";
NextPageText = ">";
ShowNumericPagerItems = true;
ShowFirstLast = true;
FirstPageText = "<<";
LastPageText = ">>";
ShowMorePagerItems = true;
MorePageText = "...";
ShowDisabledPagerItems = true;
MaximumPageIndexItems = 20;
TagName = "div";
InvalidPageIndexErrorMessage = "Invalid page index"; // MvcCorePagerResources.InvalidPageIndexErrorMessage;
PageIndexOutOfRangeErrorMessage = "Page index out of range"; //MvcCorePagerResources.PageIndexOutOfRangeErrorMessage;
MaximumPageNumber = 0;
FirstPageRoute = null;
}
/// <summary>
/// 生成分页链接的控制器的Action名称
/// </summary>
public string Action { get; set; }
/// <summary>
/// 生成分页链接的控制器名称
/// </summary>
public string Controller { get; set; }
/// <summary>
/// 生成分页链接的区域(Area)名称
/// </summary>
public string Area { get; set; }
/// <summary>
/// 生成分页链接的路由名称
/// </summary>
public string Route { get; set; }
/// <summary>
/// 生成分页链接的路由的值
/// </summary>
public RouteValueDictionary RouteValues { get; set; }
/// <summary>
/// 要应用到分页容器元素上的Html属性
/// </summary>
public IDictionary<string, object> HtmlAttributes { get; set; }
/// <summary>
/// 第一页使用的路由名称(路由定义中应不包含页索引参数,或页索引参数默认值为UrlParameter.Optional)
/// </summary>
public string FirstPageRoute { get; set; }
/// <summary>
/// 指定总页数只有一页时,MvcCorePager是否自动隐藏
/// </summary>
public bool AutoHide { get; set; }
/// <summary>
/// 页索引超出范围时显示的错误消息
/// </summary>
public string PageIndexOutOfRangeErrorMessage { get; set; }
/// <summary>
/// 页索引无效(不是有效的数值,如字符串或其它字符)时显示的错误消息
/// </summary>
public string InvalidPageIndexErrorMessage { get; set; }
/// <summary>
/// 路由Url中页索引参数的名称
/// </summary>
public string PageIndexParameterName { get; set; }
/// <summary>
/// 页索引输入或选择框的客户端ID
/// </summary>
public string PageIndexBoxId { get; set; }
/// <summary>
/// 页索引输入或下拉框跳转按钮的客户端ID,若不设置此属性,则在改变页索引输入或下拉框的值后立即自动跳转
/// </summary>
public string GoToButtonId { get; set; }
/// <summary>
/// 页索引下拉框中显示的最大页索引条数,该属性仅当页索引框为下拉框时有效,为文本输入框时被忽略
/// </summary>
public int MaximumPageIndexItems { get; set; }
/// <summary>
/// 数字页索引格式化字符串
/// </summary>
public string PageNumberFormatString { get; set; }
/// <summary>
/// 当前页索引格式字符串
/// </summary>
public string CurrentPageNumberFormatString { get; set; }
private string _tagName;
/// <summary>
/// 分页控件html容器标签名,默认为div
/// </summary>
public string TagName
{
get => _tagName;
set
{
if (string.IsNullOrEmpty(value))
{
throw new System.ArgumentNullException(nameof(TagName));
}
_tagName = value;
}
}
/// <summary>
/// 包含数字页、当前页及上、下、前、后分页元素的html模板
/// </summary>
public string PagerItemTemplate { get; set; }
/// <summary>
/// 数字页索引分页元素的html模板
/// </summary>
public string NumericPagerItemTemplate { get; set; }
/// <summary>
/// 当前页分页元素的html模板
/// </summary>
public string CurrentPagerItemTemplate { get; set; }
/// <summary>
/// 上页、下页、首页和尾首四个分页元素的html模板
/// </summary>
public string NavigationPagerItemTemplate { get; set; }
/// <summary>
/// 更多页分页元素的html模板
/// </summary>
public string MorePagerItemTemplate { get; set; }
/// <summary>
/// 已禁用的分页元素的html模板
/// </summary>
public string DisabledPagerItemTemplate { get; set; }
/// <summary>
/// 是否总是显示第一页和最后一页两个数字页索引按钮
/// </summary>
public bool AlwaysShowFirstLastPageNumber { get; set; }
/// <summary>
/// 数字页索引分页按钮数目
/// </summary>
public int NumericPagerItemCount { get; set; }
/// <summary>
/// 是否显示上一页和下一页分页导航按钮
/// </summary>
public bool ShowPrevNext { get; set; }
/// <summary>
/// 上一页按钮上显示的文本
/// </summary>
public string PrevPageText { get; set; }
/// <summary>
/// 下一页按钮上显示的文本
/// </summary>
public string NextPageText { get; set; }
/// <summary>
/// 是否显示数字页索引按钮及更多页按钮
/// </summary>
public bool ShowNumericPagerItems { get; set; }
/// <summary>
/// 是否显示第一页和最后一页分页导航按钮
/// </summary>
public bool ShowFirstLast { get; set; }
/// <summary>
/// 第一页按钮上显示的文本
/// </summary>
public string FirstPageText { get; set; }
/// <summary>
/// 最后一页按钮上显示的文本
/// </summary>
public string LastPageText { get; set; }
/// <summary>
/// 是否显示更多页按钮
/// </summary>
public bool ShowMorePagerItems { get; set; }
/// <summary>
/// 更多页按钮上显示的文本
/// </summary>
public string MorePageText { get; set; }
/// <summary>
/// 分页控件的父容器标签的ID
/// </summary>
public string Id { get; set; }
/// <summary>
/// 分页控件水平对齐方式
/// </summary>
public string HorizontalAlign { get; set; }
/// <summary>
/// 应用于分页控件的CSS样式类
/// </summary>
public string CssClass { get; set; }
/// <summary>
/// 是否显示已禁用的分页按钮
/// </summary>
public bool ShowDisabledPagerItems { get; set; }
/// <summary>
/// 限制显示的最大页数,默认值为0,即根据总记录数算出的总页数
/// </summary>
public int MaximumPageNumber { get; set; }
/// <summary>
/// 首页、下页、下页和尾页四个导航按钮的位置
/// </summary>
public PagerItemsPosition NavigationPagerItemsPosition { get; set; } =
PagerItemsPosition.BothSide;
/// <summary>
/// 页索引出错时要调用的Javascript函数
/// </summary>
public string OnPageIndexError { get; set; }
/// <summary>
/// 获取或设置分页元素(a标签)的css样式类名。
/// </summary>
public string PagerItemCssClass { get; set; }
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这段代码定义了一个名为 PagerOptions 的分页控件配置类,用于ASP.NET Core Web应用程序中的分页功能。让我详细解释一下:
主要功能
这是一个配置类,用于控制分页组件的各种显示和行为选项。
构造函数
public PagerOptions()
设置了所有属性的默认值,包括:
AutoHide = true- 只有一页时自动隐藏分页控件PageIndexParameterName = "pageindex"- URL中页码参数名NumericPagerItemCount = 10- 显示的数字页码按钮数量ShowPrevNext = true- 显示上一页/下一页按钮PrevPageText = "<"- 上一页按钮文本(HTML转义的 <)NextPageText = ">"- 下一页按钮文本(HTML转义的 >)- 等等...
主要属性分类
1. 路由相关属性
public string Action { get; set; } // Action名称
public string Controller { get; set; } // Controller名称
public string Area { get; set; } // Area名称
public string Route { get; set; } // 路由名称
public RouteValueDictionary RouteValues { get; set; } // 路由值
2. 显示控制属性
public bool AutoHide { get; set; } // 单页时自动隐藏
public bool ShowPrevNext { get; set; } // 显示上一页/下一页
public bool ShowFirstLast { get; set; } // 显示首页/尾页
public bool ShowNumericPagerItems { get; set; } // 显示数字页码
public bool ShowMorePagerItems { get; set; } // 显示"更多"按钮
3. 文本内容属性
public string PrevPageText { get; set; } // 上一页文本
public string NextPageText { get; set; } // 下一页文本
public string FirstPageText { get; set; } // 首页文本
public string LastPageText { get; set; } // 尾页文本
public string MorePageText { get; set; } // 更多页文本
4. HTML模板属性
public string PagerItemTemplate { get; set; } // 分页元素模板
public string NumericPagerItemTemplate { get; set; } // 数字页码模板
public string CurrentPagerItemTemplate { get; set; } // 当前页模板
public string NavigationPagerItemTemplate { get; set; } // 导航按钮模板
5. 样式和HTML属性
public string TagName { get; set; } // 容器标签名(默认div)
public string CssClass { get; set; } // CSS类名
public string Id { get; set; } // 元素ID
public IDictionary<string, object> HtmlAttributes { get; set; } // HTML属性
6. 错误处理
public string PageIndexOutOfRangeErrorMessage { get; set; } // 页码超出范围错误信息
public string InvalidPageIndexErrorMessage { get; set; } // 无效页码错误信息
public string OnPageIndexError { get; set; } // 错误处理JavaScript函数
特殊属性
TagName属性有验证逻辑,不允许为空NavigationPagerItemsPosition使用枚举控制导航按钮位置MaximumPageNumber可以限制最大页数显示
用途
这个类通常用于:
- 配置分页控件的外观和行为
- 自定义分页按钮的文本和样式
- 控制哪些分页元素要显示
- 设置路由和URL生成规则
- 处理分页相关的错误情况
这是一个典型的配置/选项模式实现,提供了高度的可定制性来满足不同的分页需求。
AI 正在分析代码…
评论加载中...