1. 程式人生 > >asp.net mvc基於jQuery+Ajax實現無重新整理分頁

asp.net mvc基於jQuery+Ajax實現無重新整理分頁

解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點選後利用ajax技術傳送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。後端控制器處理完後利用PartialView方法把資料返回到分部檢視中,利用ViewBag來返回當前頁碼和總記錄數和pageSize。ajax通過回撥函式把控制器返回的檢視加到頁面中。

說明:分頁具體的分頁導航和樣式使用了外掛。

控制器程式碼

  1. using _116.Models;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Mvc;  
  7. namespace _116.Controllers  
  8. {  
  9.     publicclass HomeController : Controller  
  10.     {  
  11.         private DataContext db = new DataContext();  
  12.         privatereadonlyint pageSize = 3;  
  13.         //
  14.         // GET: /Home/
  15.         public ActionResult Index()  
  16.         {  
  17.             ViewBag.PageSize = pageSize;  
  18.             ViewBag.TotalCount = db.Articles.Count();  
  19.             return View();  
  20.         }  
  21.         /// <summary>
  22.         /// 文章列表,ajax分頁
  23.         /// </summary>
  24.         /// <param name="pageIndex"></param>
  25.         /// <returns></returns>
  26.         public ActionResult AjaxPaging(int pageIndex = 1)  
  27.         {  
  28.             IQueryable<ArticleModels> articles = db.Articles.OrderByDescending(a => a.ObjectID).Skip((pageIndex - 1) * pageSize).Take(pageSize);  
  29.             ViewBag.PageIndex = pageIndex;  
  30.             return PartialView("IndexArticleList", articles);  
  31.         }  
  32.     }  
  33. }  
檢視程式碼
  1. <!--文章列表-->
  2.     <sectionid="articleList"class="posts block"></section>
  3. <!--分頁-->
  4.     <scriptsrc="~/common/scripts/kkpager.js"></script>
  5.     <linkhref="~/common/pluginCss/kkpager.css"rel="stylesheet"/>
  6.     <navid="kkpager"class="posts block pagination"></nav>
  7.     <!--分頁-->

分部檢視程式碼
  1. @model  IEnumerable<_116.Models.ArticleModels>
  2. @foreach (var item in Model)  
  3. {  
  4.     <articleclass="post block">
  5.         <!--標題-->
  6.         <h2class="h2">
  7.             <small><ahref="/Article/Details/@item.ObjectID">@Html.DisplayFor(modelItem => item.ObjectTitle)</a></small>
  8.         </h2>
  9.         <!--發表時間-->
  10.         <divclass="meta">
  11.             <time>@item.CreateTime.ToString("yyyy-MM-dd")</time>
  12.             <iclass="glyphicon glyphicon-eye-open eye"></i>
  13.             <span>(@item.VisitedCount)</span>
  14.         </div>
  15.         <!--摘要-->
  16.         <divclass="content">
  17.             <p>@Html.DisplayFor(modelItem => item.ObjectSummary)</p>
  18.         </div>
  19.         <!--詳細內容連結-->
  20.         <divclass="readMore"><ahref="/Article/Details/@item.ObjectID">[繼續閱讀]</a></div>
  21.     </article>
  22. }  
  23. <!--分頁引數-->
  24. <inputid="pageIndex"type="hidden"value="@ViewBag.PageIndex"/>
Ajax程式碼[javascript] view plain copy
  1. <script type="text/javascript">  
  2.     $(function ()  
  3.     {  
  4.         //初始載入文章列表資料
  5.         GetArticlesData(1);  
  6.     });  
  7.     //ajax獲取文章列表並分頁
  8.     function GetArticlesData(pageIndex)  
  9.     {  
  10.         var ajaxUrl = '/Home/AjaxPaging?pageIndex=' + pageIndex;  
  11.         var ajaxType = 'post';  
  12.         var ajaxDataType = 'text';  
  13.         var sucFun = function (data, status)  
  14.         {  
  15.             if (data == null && status != "success")  
  16.             {  
  17.                 alert("獲取資料失敗!");  
  18.                 returnfalse;  
  19.             }  
  20.             else
  21.             {  
  22.                 $("#articleList").html(data);  
  23.                 //移除列表最後一項的底部陰影
  24.                 $("#articleList").find("article").last().removeClass("block");  
  25.                 //分頁
  26.                 var totalCount = parseInt('@ViewBag.TotalCount');  
  27.                 var pageSize = parseInt('@ViewBag.PageSize');  
  28.                 var totalPages = totalCount % pageSize == 0 ? totalCount / pageSize : (parseInt(totalCount / pageSize) + 1);  
  29.                 pagecutforsearch(totalPages, totalCount, $("#pageIndex").val());  
  30.             }  
  31.         };  
  32.         //ajax引數設定
  33.         var Option =  
  34.                     {  
  35.                         url: ajaxUrl,  
  36.                         type: ajaxType,  
  37.                         dataType: ajaxDataType,  
  38.                         cache: false//設定為 false 將不會從瀏覽器快取中載入請求資訊。
  39.                         async: true//(預設: true),所有請求均為非同步請求。傳送同步請求,請將此選項設定為 false。同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。
  40.                         timeout: 3600, //設定請求超時時間(毫秒)。此設定將覆蓋全域性設定。
  41.                         error: function () { },  
  42.                         success: sucFun,  
  43.                         beforeSend: function () { }  
  44.                     };  
  45. 相關推薦

    asp.net mvc基於jQuery+Ajax實現重新整理

    解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點選後利用ajax技術傳送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。後端控制器處理完後利用PartialView方法把資料返回到分部檢視中,利用

    ASP.NET MVC 結合bootstrap-table-實現服務端

    bootstrap-table展示資料很好用,但是當資料量很大時,存在效能問題。bootstrap-table需要分頁的功能,需要時就請求資料,而不是一次性載入到客戶端上。bootstrap-table前臺預設時客戶端分頁,此時的分頁已失去了應有的作用。因此使用服務端,話不多說,直接上程式碼 前

    javascript專案實戰---ajax實現重新整理

    <?php class Pagination { private $total; //資料表中總記錄數 private $listRows; //每頁顯示行數 private $limit; //mysql 資料庫的limit private $uri; //分頁

    SSH三大框架的整合+利用Ajax實現重新整理

    以下是我利用Struts2.3.24、Spring4.0、Hibernate4.2 結合Mysql資料庫進行的ssh整合,實現分頁需要json.js 首先ssh的整合需要匯入所有的jar包 在web.xml <?xml version="1.0" e

    ASP.NET+Ajax+JQuey+Json資料+儲存過程實現重新整理

    <!--引入jquery-1.6.2--> <!--ShowPageData1.aspx頁面--> <script src="../Jquery/jquery-1.6.2.min.js" type="text/javascript">&l

    asp.net Mvc4 使用ajax結合外掛實現重新整理

    本文為在mvc4中使用ajax實現無重新整理分頁demo,記錄一下。 解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點選後利用ajax技術傳送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。

    tp5+ajax+jq實現重新整理

    tp5框架裡面自帶有panigate()+rende()的方法可以超簡單的實現分頁,但是就是看著一直要重新整理很不爽,所以找了網上的好多程式碼,終於找到了一個邏輯簡單的無重新整理分頁,以下是我更改適合之後實現的效果 程式碼裡面有詳細註釋了,就不多說了,說明一下分頁查詢的原

    實現FreeMarker+Ajax重新整理

    目前已經使用SpringBoot+MyBatis+PageHelper實現了物理分頁. 現在想通過Ajax實現FreeMarker的無重新整理分頁. 我的理解是最關鍵的地方在於如何替換FreeMarker中的標籤的值. 只要解決了這一點, 就可以輕鬆解決資料回顯和分頁出現的

    分享一個自己寫的MVC EF 增刪改查 重新整理程式

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    ASP.NET MVC & WebApi 中實現Cors來讓Ajax可以跨域訪問 (轉載)

    詳細 簡介 part bsp bob 打印 不能 res user 什麽是Cors? CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了

    Asp.net Mvc Preview 5 體驗--實現ActionSelectionAttribute來判斷是否為AJAX請求而選擇不同的Action

    ActionSelectionAttribute是ASP.NET MVC Preview 5 提供的一個抽象基類,通過ActionSelectionAttribute的命名我們就可以猜想到這個Attribute是用來選擇(匹配)Action方法的。該抽象類只提供了一個抽象的方法 IsValidForReque

    ASP.NET MVC Controller接收ajax post方式發送過來的json對象或數組數據

    thrown data btn XML 傳輸 接收 pan javascrip form提交 本例旨在說明我的一種Controller接收ajax提交(POST)過來的json對象或數組信息的方式,感覺應該有更好的方式,歡迎提出寶貴意見。JSON.stringify(jso

    ASP.NET沒有魔法——ASP.NET MVC使用Oauth2.0實現身份驗證

    重定向 adt imp img imsi als jwt and -i 原文:ASP.NET沒有魔法——ASP.NET MVC使用Oauth2.0實現身份驗證  隨著軟件的不斷發展,出現了更多的身份驗證使用場景,除了典型的服務器與客戶端之間的身份驗證外還有,如服務與服務之間

    ASP.NET MVC學習之Ajax(完結)

    等待 failure lba info 學習 有一個 代碼 orm 修改 網址:https://www.cnblogs.com/yaozhenfa/p/asp_net_mvc_ajax.html 一.前言 通過上面的一番學習,大家一定收獲不少。但是總歸會有一個結束的時候

    spring mvc + ajax實現重新整理下載檔案

    JQuery的ajax函式的返回型別只有xml、text、json、html等型別,沒有“流”型別,所以我們要實現ajax下載,不能夠使用相應的ajax函式進行檔案下載。但可以用js生成一個form,用這個form提交引數,並返回“流”型別的資料。在實現過程中,

    ASP NET MVC使用Oauth2 0實現身份驗證

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    ASP.NET MVC中使用OutputCache實現伺服器端頁面級快取注意問題

        CSDN廣告是越來越多了,所有部落格筆記不再更新,新網址 DotNet筆記 1) 血的教訓:先說使用OutputCache實現伺服器端頁面級快取注意問題 在ASP.NET MVC中,假如我們想要將某個頁面(即某個Action)快取在伺服器端,可以在Action上

    jquery.page.js實現ajax重新整理

    http://blog.csdn.net/dengboblog/article/details/52699332  寫程式碼參考了這位大神的部落格。下面貼上我的程式碼。 首先是要把引入的分頁js和css新增進來。這個程式碼自己百度吧。 $.ajax({ type

    ASP.NET MVC使用jQuery來POST資料至資料庫中

    學習ASP.NET MVC程式,結合jQuery客戶端程式碼,Post資料至資料庫去。Insus.NET今天寫一個完整性的例子。 在資料庫中,建立一個表[dbo].[TestUser]: 既然是把資料存入資料庫中,得先在資料庫建立一個儲存過程[dbo].[usp_Te

    ASP.NET MVC中使用JS實現不對稱加密密碼傳輸

    摘要:ASP.NET MVC中登入頁面中點選登入後,使用者名稱、密碼將被明文傳輸到Controller中,使用Fiddler等工具可以輕鬆截獲並獲取密碼, 這是不安全的。 使用對稱加密,如AES,金鑰將被暴露前端程式碼,也是不安全的。使用不對稱加密能夠較好解決這個問題。本文