国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 昭觉县| 长泰县| 蚌埠市| 四子王旗| 澄江县| 卫辉市| 灵台县| 库伦旗| 乾安县| 泸定县| 广丰县| 三门峡市| 奎屯市| 永昌县| 茶陵县| 谷城县| 彭山县| 樟树市| 梁平县| 满城县| 井研县| 定襄县| 微山县| 资中县| 华安县| 电白县| 甘德县| 甘德县| 焦作市| 长寿区| 南开区| 丹东市| 望都县| 绥棱县| 新乡市| 荃湾区| 扬州市| 丽水市| 南平市| 辽宁省| 文成县|