亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

MVC無刷新分頁(即局部刷新,帶搜索,頁數選擇,排序功能)

2019-11-17 01:47:25
字體:
來源:轉載
供稿:網友

MVC無刷新分頁(即局部刷新,帶搜索,頁數選擇,排序功能)

  我查看了很多網站,大部分評論分頁都是局部刷新的,可大部分電商商品展示分頁都是有刷新頁面的,于是我便做了一個商品展示無刷新分頁的例子。接下來我就將做一個模仿淘寶已買到的寶貝功能,不過我的是無刷新分頁的。

  至于為何要用無刷新分頁(局部刷新)呢,我個人覺得有幾點原因:

  1. 提高用戶體驗,無刷新分頁網頁看起來相對靜止,滾輪不會跳到上面,加載速度比較快;

  2. 減輕網站服務器壓力,返回局部頁面(其中無需包含樣式和腳本)肯定比返回整個頁面要來的輕松;

  3. 還有個分頁的好處就是減輕數據庫的壓力,返回幾行的數據肯定比返回所有行的數據要輕松啦。

  首先右擊項目-管理NuGet程序包,聯機搜索MvcPager,并安裝

  然后在BLL的訂單管理OrderManage類里添加一個ToPagedList方法,第幾頁pageIndex和每頁行數pageSize是必需的,其他都可空。

 1         public PagedList<SH_Order> ToPagedList(int pageIndex, int pageSize, string orderBy, string orderName, SH_OrderState? state, SH_PayType? payType, DateTime? startTime, DateTime? endTime, long? accountId) 2         { 3             using (var db = new ShopContext()) 4             { 5                 var log = db.Order.Include(s => s.Account); 6  7                 if (accountId != null) 8                 { 9                     log = db.Order.Where(o => o.AccountId == accountId);10                 }11 12                 if (state != null)13                 {14                     log = log.Where(o => o.State == state);15                 }16 17                 if (payType != null)18                 {19                     log = log.Where(o => o.PayType == payType);20                 }21 22                 if (startTime != null)23                 {24                     log = log.Where(o => o.LogTime > startTime);25                 }26 27                 if (endTime != null)28                 {29                     log = log.Where(o => o.LogTime < endTime);30                 }31 32                 if (!string.IsNullOrWhiteSpace(orderName))33                 {34                     log = log.Where(o => o.OrderName.Contains(orderName));35                 }36 37                 switch (orderBy)38                 {39                     case "LogTime":40                         log = log.OrderBy(o => o.LogTime);41                         break;42                     case "LogTime Desc":43                         log = log.OrderByDescending(o => o.LogTime);44                         break;45                     case "AccountName":46                         log = log.OrderBy(o => o.Account.AccountName);47                         break;48                     case "AccountName Desc":49                         log = log.OrderByDescending(o => o.Account.AccountName);50                         break;51                     case "Total

  可是只有訂單還不行呀,訂單是有訂單明細的,也就是說除了訂單表還有訂單明細表,這個不搞出來豈不是做不了淘寶的那個功能?那就再加一個方法:

1         public List<List<SH_OrderDetail>> GetOrderDetailByOrders(IEnumerable<SH_Order> orders)2         {3             using (var db = new ShopContext())4             {5                 var details = new List<List<SH_OrderDetail>>();6                 orders.ToList().ForEach(o => details.Add(db.OrderDetail.Include(j => j.Gift).Where(j => j.OrderId == o.ID).AsNoTracking().ToList()));7                 return details;8             }9         }

  至此,訂單和訂單明細都能獲取,BLL的邏輯處理已經完成了。接下來就是Web項目的事了。先建一個訂單模型:

1     public class OrdersViewModel2     {3         public PagedList<SH_Order> Orders { get; set; }4 5         public List<List<SH_OrderDetail>> OrderDetails { get; set; }6     }

  這個模型用來存放從BLL獲取的訂單和訂單明細,然后就處理Controller了:

        [ShopAuthorize]        public ActionResult OrderList(string orderState, string orderBy, string payType, string logTime, string orderName, string giftName, int pageSize = 10, int pageIndex = 1)        {            DateTime? startTime = null;            DateTime? endTime = null;            switch (logTime)            {                case "1MonthAgo":                    endTime = DateTime.Now.AddMonths(-1);                    break;                default:                    startTime = DateTime.Now.AddMonths(-1);                    break;            }            SH_OrderState enumOrderState;            var result = Enum.TryParse(orderState, out enumOrderState);            SH_OrderState? endOrderState = null;            if (result) endOrderState = enumOrderState;            SH_PayType enumPayType;            result = Enum.TryParse(payType, out enumPayType);            SH_PayType? endPayType = null;            if (result) endPayType = enumPayType;            var manage = new OrderManage();            var orders = manage.ToPagedList(pageIndex, pageSize, orderBy, orderName, endOrderState, endPayType, startTime, endTime, long.Parse(User.Identity.GetUserId()));            var orderList = new OrdersViewModel            {                Orders = orders,                OrderDetails = manage.GetOrderDetailByOrders(orders)            };            if (Request.IsAjaxRequest())            {                return PartialView("_OrderList", orderList);            }            ViewBag.OrderState = Common.Common.GetSelectListByEnum(typeof(SH_OrderState), "全部訂單狀態");            ViewBag.PayType = Common.Common.GetSelectListByEnum(typeof(SH_PayType), "全部支付方式");            ViewData["GiftLevel"] = Common.Common.GetSelectListByEnum(typeof(SH_GiftLevel));            return View("OrderManage", orderList);        }

  其中ShopAuthorize是我自定義的登錄驗證:

 1     public class ShopAuthorizeAttribute : AuthorizeAttribute 2     { 3         protected override bool AuthorizeCore(HttpContextBase httpContext) 4         { 5             var user = httpContext.User; 6             return user != null && user.IsInRole("Account"); 7         } 8          9         protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)10         {11             if (filterContext == null)12             {13                 return;14             }15 16             var path = filterContext.HttpContext.Request.Path;17             const string strUrl = "/Account/Login?returnUrl={0}";18             filterContext.HttpContext.Response.Redirect(string.Format(strUrl, HttpUtility.UrlEncode(path)), true);19         }20     }

  Controller也完成了數據的傳遞,最后只剩下頁面了,先說OrderManage頁面,此頁面關鍵地方在于異步提交的表單:

  提醒一下,要用Ajax提交需加上jquery.unobtrusive-ajax.min.js和@{ Html.RegisterMvcPagerScriptResource(); }引用,并且引用Jquery1.7以上版本,另外還需加上

  其中每頁行數選擇的就自己在OrderManage寫一個下拉列表,再寫個腳本實現改變行數時改變表單里的id為pageSize的值,并觸發表單的提交即可,排序的也同理改變表單里的id為orderBy的值并觸發表單的提交即可。最后就只剩下局部頁面_OrderList了,這里的關鍵點在于:

  至此,無刷新分頁功能已完成,來張效果圖吧

  是不是和淘寶的有點像捏。

  聲明,本文有參考http://www.webdiyer.com/mvcpager/,樣式也可以在http://www.webdiyer.com/mvcpager/demo/applyCSS/學習一下。歡迎探討共同學習喔。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久在线观看| 久久精品国产清自在天天线| 欧美一区二区三区……| 亚洲免费影视第一页| 日韩最新在线视频| 国产精品三级美女白浆呻吟| 欧美日韩xxxxx| 亚洲精品国产精品国产自| 亚洲欧美精品在线| 九九九久久久久久| www.xxxx精品| 91av在线免费观看视频| 国产成+人+综合+亚洲欧洲| 亚洲人成在线免费观看| 国产91免费看片| 欧美激情第1页| 91免费综合在线| 国产一区二区三区在线免费观看| 国产精品一区二区久久久| 久久免费精品日本久久中文字幕| wwwwwwww亚洲| 高清在线视频日韩欧美| 亚洲精品乱码久久久久久金桔影视| 色黄久久久久久| 欧美尺度大的性做爰视频| 亚洲电影成人av99爱色| 国产自摸综合网| 久久亚洲精品一区| 欧美极品在线播放| 日本成熟性欧美| 亚洲性xxxx| 国产视频亚洲视频| 国产伦精品一区二区三区精品视频| 97婷婷大伊香蕉精品视频| 日韩在线中文视频| 国产精品第3页| 国产精品h在线观看| 日韩中文在线不卡| 日韩精品视频在线观看免费| 久久久噜噜噜久久中文字免| 亚洲va久久久噜噜噜| 91中文字幕一区| 久久精品亚洲精品| 狠狠久久亚洲欧美专区| 亚洲国产精品va在线看黑人| 欧美精品亚州精品| 欧美日韩中文字幕日韩欧美| 午夜美女久久久久爽久久| 色偷偷亚洲男人天堂| 欧美人与物videos| 久久久之久亚州精品露出| 欧美大成色www永久网站婷| 国产日韩亚洲欧美| 国产中文欧美精品| 欧美国产乱视频| 久久久久久久网站| 亚洲欧美在线一区二区| 欧美精品激情视频| 欧美国产日韩二区| 亚洲人成伊人成综合网久久久| 亚洲国产又黄又爽女人高潮的| 亚洲精品福利资源站| 国产一区av在线| 色综久久综合桃花网| 久久这里有精品| 精品亚洲一区二区三区| 91精品久久久久久久久久久| 国产精品免费视频xxxx| 九九视频这里只有精品| 韩国美女主播一区| 91深夜福利视频| 国产欧美日韩中文字幕| 国产精品69久久| 456亚洲影院| 热久久99这里有精品| 日韩美女视频免费在线观看| 国产精品96久久久久久又黄又硬| 午夜免费日韩视频| 2018中文字幕一区二区三区| 亚洲欧美制服另类日韩| 日本欧美中文字幕| 久久艹在线视频| 日韩一区二区精品视频| 91网站免费观看| 国外成人在线视频| 欧美麻豆久久久久久中文| 日韩成人久久久| 国产精品影片在线观看| 精品亚洲夜色av98在线观看| 成人美女av在线直播| 日韩高清电影好看的电视剧电影| 亚洲男人天堂2019| 26uuu另类亚洲欧美日本一| 亚洲va欧美va在线观看| 黑人与娇小精品av专区| 色偷偷888欧美精品久久久| 国产精品旅馆在线| 国产97人人超碰caoprom| 亚洲成**性毛茸茸| 午夜精品一区二区三区在线视| 国产精品一区电影| 欧美丰满老妇厨房牲生活| 欧美成人小视频| 国产精品极品美女粉嫩高清在线| 欧美成人免费在线视频| 亚洲天堂av电影| 丝袜亚洲另类欧美重口| 亚洲国产中文字幕在线观看| 狠狠色狠狠色综合日日五| 国产精品黄页免费高清在线观看| 亚洲jizzjizz日本少妇| 奇米成人av国产一区二区三区| 91手机视频在线观看| 国产一区二区欧美日韩| 亚洲最大av在线| 欧美日韩激情视频| 亚洲欧洲成视频免费观看| 欧美剧在线观看| 九九九久久久久久| 欧美亚洲国产另类| 国产精品老牛影院在线观看| 欧美精品久久久久久久免费观看| 色视频www在线播放国产成人| 欧美一区二区视频97| 91久久精品国产91久久性色| 亚洲欧美激情一区| 91在线观看免费高清完整版在线观看| 97av在线视频| 亚洲午夜久久久影院| 91精品国产成人| 91精品国产91久久| 亚洲精品美女在线观看| 亚洲男人7777| 555www成人网| 欧美日韩加勒比精品一区| 136fldh精品导航福利| 欧美电影免费观看大全| 亚洲福利在线视频| 欧美日韩一区二区三区| 欧美激情精品久久久久久大尺度| 国产成人精品一区二区| 国产精品激情av在线播放| 91成人天堂久久成人| 91精品国产成人| 九色91av视频| 亚洲最大的av网站| 成人精品视频久久久久| 亚洲精品www| 久久精品国产精品亚洲| 中文字幕av一区二区三区谷原希美| 一区二区三区回区在观看免费视频| 国产亚洲精品久久久优势| 欧美亚洲国产成人精品| 欧洲成人在线观看| 国产精品一二三在线| 亚洲视频一区二区三区| 国产精品毛片a∨一区二区三区|国| 久久视频在线免费观看| 日韩精品在线私人| 日韩av在线高清| 91夜夜未满十八勿入爽爽影院| 欧美精品电影免费在线观看| 国产一区二区动漫| 日韩精品中文字幕有码专区|