国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 擴(kuò)展 > MVC > 正文

MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁

2024-09-06 20:44:40
字體:
供稿:網(wǎng)友

前幾天做一個(gè)小小小項(xiàng)目,使用了MVC+Bootstrap,以前做分頁都是異步加載Mvc部分視圖的方式,因?yàn)檫@個(gè)是小項(xiàng)目,就隨便一點(diǎn)。一般的列表頁面,少不了有查詢條件,下面分享下Drapper+PagedList.Mvc支持多查詢條件分頁的使用經(jīng)驗(yàn)。

在MVC中我們一般習(xí)慣使用強(qiáng)類型Model,通過分析Orders的展示頁面,來構(gòu)建這個(gè)Model。

1.查詢參數(shù)的Model

public class OrderQueryParamModel  {    /// <summary>    /// 訂單編號(hào)    /// </summary>    public string OrderNo { get; set; }    /// <summary>    /// 客戶名稱    /// </summary>    public string CustomerName { get; set; }  }

2.Orders分頁數(shù)據(jù)Model

PagedList提供了一個(gè)StaticPagedList<T>泛型類來封裝數(shù)據(jù)。(看看StaticPagedList的源代碼,使用非常方便,把T類型的數(shù)據(jù)subset,pageNumber,pageSize,totalCount初始化進(jìn)去就可以了。

public StaticPagedList(IEnumerable<T> subset, IPagedList metaData) : this(subset, metaData.PageNumber, metaData.PageSize, metaData.TotalItemCount)    {    }

3.Orders展示頁面整體Model

public class OrderViewModel  {    public OrderQueryParamModel QueryModel { get; set; }    public PagedList.StaticPagedList<OrderModel> OrderList { get; set; }   }

OK,接下來看看在Controller中如何給來OrderViewModel填充數(shù)據(jù)吧

 public ActionResult List(OrderViewModel orderViewModel, int page = 1)    {      var pagesize = 10;      var count = 0;      var orders = _orderService.GetOrders(page, pagesize, model.QueryModel, ref count);      orderViewModel.OrderList = new StaticPagedList<OrderModel>(orders, page, pagesize, count);      return View(orderViewModel);    }

Controller中代碼很簡(jiǎn)單,接收POST過來的兩個(gè)參數(shù),orderViewModel:包含查詢參數(shù)Model,page:PagedList定義的當(dāng)前頁。

順便看看GetOrders()這個(gè)方法吧,為了省事懶得寫存儲(chǔ)過程,直接用了Drapper的QueryMultiple,感覺很強(qiáng)大啊。

 public List<OrderModel> GetOrders(int pageindex, int pagesize, OrderQueryParamModel query, ref int count)    {      var orders = new List<OrderModel>();      var whereStr = string.Empty;      if (query != null)      {        if (!string.IsNullOrEmpty(query.CustomerName))        {          whereStr += string.Format(" and CustomerName like '%{0}%' ", query.CustomerName);        }      }      var cmd = string.Format(@"SELECT COUNT(*) FROM [Orders] WHERE 1=1 {0};            SELECT * FROM (            SELECT *, row_number() OVER (ORDER BY orderId DESC ) AS [row]                  FROM [Orders] WHERE 1=1 {0} )t            WHERE t.row >@indexMin AND t.row<=@indexMax", whereStr);      using (IDbConnection conn = BaseDBHelper.GetConn())      {        using (var multi = conn.QueryMultiple(cmd,           new { indexMin = (pageindex - 1) * pagesize, indexMax = pageindex * pagesize }))        {          count = multi.Read<int>().SingleOrDefault();          orders = multi.Read<OrderModel>().ToList();        }      }      return orders;    }            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青田县| 富民县| 凤城市| 会理县| 健康| 开原市| 阳东县| 墨脱县| 红河县| 含山县| 陇川县| 海盐县| 凌源市| 稷山县| 垫江县| 志丹县| 景洪市| 聂荣县| 东源县| 南川市| 定远县| 玛曲县| 荆门市| 政和县| 达拉特旗| 新干县| 进贤县| 车致| 鱼台县| 雷波县| 盈江县| 双城市| 大兴区| 彰武县| 廉江市| 肥西县| 报价| 安多县| 武清区| 雷波县| 淳安县|