参照 草根专栏- ASP.NET Core + Ng6 实战:https://v.qq.com/x/page/v07647j3zkq.html
翻页, 过滤, 排序等 – 如何传递参数?
Query String
- http://localhost:5000/api/country?pageIndex=12&pageSize=10&orderBy=id
使用抽象父类 QueryParameters, 包含常见参数:
- PageIndex, PageSize, OrderBy …
一、翻页:
1、在Core.Entity 中添加 QueryParameters.cs 类
namespace BlogDemo.Core.Entities { public abstract class QueryParameters : INotifyPropertyChanged { private const int DefaultPageSize = 10; private const int DefaultMaxPageSize = 100; private int _pageIndex; public int PageIndex { get => _pageIndex; set => _pageIndex = value >= 0 ? value : 0; } private int _pageSize = DefaultPageSize; public virtual int PageSize { get => _pageSize; set => SetField(ref _pageSize, value); } private string _orderBy; public string OrderBy { get => _orderBy; set => _orderBy = value ?? nameof(IEntity.Id); } private int _maxPageSize = DefaultMaxPageSize; protected internal virtual int MaxPageSize { get => _maxPageSize; set => SetField(ref _maxPageSize, value); } public string Fields { get; set; } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer<T>.Default.Equals(field, value)) { return false; } field = value; OnPropertyChanged(propertyName); if (propertyName == nameof(PageSize) || propertyName == nameof(MaxPageSize)) { SetPageSize(); } return true; } private void SetPageSize() { if (_maxPageSize <= 0) { _maxPageSize = DefaultMaxPageSize; } if (_pageSize <= 0) { _pageSize = DefaultPageSize; } _pageSize = _pageSize > _maxPageSize ? _maxPageSize : _pageSize; } } }