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

首頁 > 編程 > JavaScript > 正文

使用異步controller與jQuery實現卷簾式分頁

2019-11-19 11:18:56
字體:
來源:轉載
供稿:網友

問題

今天很多網站與數據庫交互。如果您的網站接收大量的流量,SQL查詢來檢索數據,是相當激烈的。更重要的是因為普通用戶點擊一個在15秒內到達您的網站的鏈接, 檢索和生成內容的工作可能是不必要的,尤其是當內容是“地域折疊”(不滾動是不可見的)。為了幫助解決這個問題,內容將被“按需”載入。足夠的內容將被載入,使頁面感覺起來是隨用戶向下滾動閱讀遞增的,更多的內容將在不影響用戶體驗的場景下填充。

解決方案

使用異步controller與jQuery按需加載內容,當用戶開始通過網站的內容滾動時進一步加載內容。

討論

異步controller可能在許多MVC應用中未充分利用。最有可能的是因為人們不知道他們,更重要的是,不知道何時使用它們。以下是摘錄見MSDN網站:

“在應用中,線程饑餓可能會發生,您可以配置action 異步處理。異步請求和同步請求過程需要相同的時間例如,如果一個請求,使得網絡調用需要兩秒鐘來完成的,請求需要兩秒鐘,無論是執行同步或異步。然而,在一個異步調用,當服務器響應等待它的第一次請求時完成時他響應其他的請求沒有被阻塞。因此,當有許多請求調用長時間運行的操作時,異步請求會防止請求排隊?!?/p>

在這個例子里,異步請求是完美的解決方案。因為他會讓IIS服務器有能力去處理更多重要的請求,比如一個新的用戶第一次訪問網站。其中,加載用戶點播內容是不太重要,因為大多數人甚至不關注被加載額外的內容。在一個典型的社交網站,大多數活動可能包含用戶的意見。在以前的秘方中,創建了一個評論的功能。

在這個例子中,將更新網站的網頁,列出最近的評論。足夠的評論會被顯示,所以會出現滾動條。一旦用戶開始滾動,一個Ajax請求異步controller將檢索其他評論。

首先Home/Index view 需要更新去顯示最近的評論。為了提供一些評論的上下文內容,關于書的基礎詳情也將被顯示為導航到圖書的鏈接。所以這個view將簡單的調用view 中的render function會在下邊創建:

@model IEnumerable<MvcApplication.Models.BookComment>@{ViewBag.Title = "Home Page";}<h2>@ViewBag.Message</h2><p>To learn more about ASP.NET MVC visit <a  rel="external nofollow" title="ASP.NET MVC Website">http://asp.net/mvc</a>.</p><script type="text/javascript">var lastY = 0;var currentY = 0;var page = 1;var maxPages = @ViewBag.maxPages;$(window).scroll(function () {if (page < maxPages) {currentY = $(window).scrollTop();if (currentY - lastY > 200 * (page - 1)) {lastY = currentY;page++;$.get('CommentFeed/Comments?page=' + page,function(data) {$('#comments').append(data);});}}});</script><div id="comments"><h2>Recent Comments</h2>@Html.Partial("../CommentFeed/Comments", Model)</div>

在上面的例子,執行滾動窗口時也有一些比較復雜的JavaScript代碼會執行。一些全局JavaScript變量被定義去保持監控當前的“Y”滾動的位置,最后的“Y”滾動位置和當前被檢索的頁面。當窗口的scrollTop位置減去最后的滾動位置是大于一個具體的數字,通過Ajax檢索新書評論并附加到評論列表。

你將根據你自己的網站去根據矯正那個具體的數字,基于內容的高度,要確保新的內容總是要提前檢索。

下一步,HomeController需要更新檢索圖書評論列表。 評論在降序排序,以確保最新的創建日期評論首先顯示。為了防止激烈的數據庫負載,全部評論將減少到一個小數目。這應該根據你的網站去調節,以確保有足夠的內容,導致滾動。在下面的例子,建議被限制在3。分頁的最大數也取決于評論總數于除以3。一旦最大的評論數已經返回,最大分頁數是用來防止進一步的Ajax調用。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Globalization;using System.Data.Entity;using MvcApplication.Models;namespace MvcApplication.Controllers{public class HomeController : Controller{private BookDBContext db = new BookDBContext();public ActionResult Index(){ViewBag.Message = "Welcome to ASP.NET MVC!";// Get our recent commentsvar bookcomments = db.BookComments.Include(b => b.Book).OrderByDescending(b => b.Created).Take(3);var count = db.BookComments.Count();ViewBag.maxPages = count / 3 + 1;return View(bookcomments);}public ActionResult ChangeLanguage(string language){Session["CurrentLanguage"] = new CultureInfo(language);return Redirect("Index");}public ActionResult About(){return View();}public ActionResult MobileTest(){return View();}public ActionResult MobileTest2(){return View();}}}

同樣的功能需要被復制到一個新的異步controller??刂破魑募A選中,右鍵單擊并選擇“添加→控制器。新
控制器將被命名為CommentFeedController。該控制器不需要腳手架模板功能,下拉,選擇空
控制器,然后按添加。

這個控制器會看起來與一個典型的控制器稍有不同。使用異步控制器,一個view將分成兩個函數。第一個函數執行的異步
請求(例如,檢索的view)。第二個函數接收結果,異步調用和返回或顯示的結果。

提示:在下面的例子,呈現局部視圖。在某些應用中,它可能是有益的,以減少網絡流量,返回一個JSON結果,讓JavaScript代碼處理與顯示。但是,要簡化這個例子,重點放在異步控制器,前者將用于返回一個partial view。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcApplication.Models;using System.Data.Entity;namespace MvcApplication.Controllers{public class CommentFeedController : AsyncController{private BookDBContext db = new BookDBContext();public void CommentsAsync(int page){AsyncManager.OutstandingOperations.Increment();AsyncManager.Sync(() =>{var bookcomments = db.BookComments.Include(b => b.Book).OrderByDescending(b =>b.Created).Skip(page * 3).Take(3);AsyncManager.Parameters["bookcomments"] =bookcomments;AsyncManager.OutstandingOperations.Decrement();});}public ActionResult CommentsCompleted(IEnumerable<BookComment> bookcomments){return PartialView(bookcomments);}}}

第一個 函數,CommentsAsync,接收從javascript傳入的當前頁面,并且用這個值去檢索接下來的三個評論。然后通過異步方法,檢索評論并且傳遞一個變量到第二個函數。最終的事是執行AsyncManager.OutstandingOperations.Decrement()方法。OutstandingOperations(未解決操作)的increment(遞增)和decrement(遞減)的匹配是很重要的。否則,當他們不匹配時,sync manager 將取消請求,這可以組織永不休止的請求。

第二個函數接收book comments 并且返回一個partial view。這和Home/Index view一樣。在這個過程的最后一個步驟是創建partial view。右擊文件夾,添加新文件夾。這個文件夾應該命名為CommentFeed去匹配controller的名字。選擇這個文件夾,右擊,點Add→View 命名為Comments-----在添加它之前確定去檢查Partial view。

@model IEnumerable<MvcApplication.Models.BookComment>@foreach (var item in Model) {<h3><a href="@Url.Action(" rel="external nofollow" Details", "Books", new {ID=item.Book.ID } )">@Html.DisplayFor(modelItem => item.Book.Title)</a></h3><h4>Comment Posted: @Html.DisplayFor(modelItem => item.Created)</h4><p>@MvcHtmlString.Create(Html.Encode(item.Comment).Replace(Environment.NewLine, "<br />"))</p>}

上邊的view遍歷comments,并首先顯示書的標題和詳細信息頁面的鏈接,然后創建評論的日期,最后創建comment本身。由于View里可能包含換行符,用<br/>替代每個Evironment.NewLine去匹配評論輸入間距。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜久久久久久久| 在线观看欧美视频| 欧美一级黄色网| 亚洲a级在线播放观看| 欧美日韩国产限制| 久久精品中文字幕免费mv| 成人精品一区二区三区| 日韩理论片久久| 中文字幕欧美日韩在线| 富二代精品短视频| 成人欧美一区二区三区在线湿哒哒| 成人www视频在线观看| 视频一区视频二区国产精品| 国产精品久久久久久久久久三级| 亚洲开心激情网| 精品动漫一区二区| 亚洲18私人小影院| 自拍偷拍亚洲区| 欧美有码在线视频| 日韩av综合网站| 成人精品久久一区二区三区| 久久久久久久999| 亚洲欧美日韩精品| 亚洲最大的成人网| 欧美激情a在线| 久久久久久亚洲精品不卡| 国产精品久久9| 久久久久国色av免费观看性色| 久久久亚洲欧洲日产国码aⅴ| 庆余年2免费日韩剧观看大牛| 日韩电影免费观看中文字幕| 日韩成人av网址| 亚洲色图色老头| 中文字幕精品在线| 欧美刺激性大交免费视频| 亚洲电影免费观看高清完整版在线观看| 亚洲一区二区三区乱码aⅴ| 在线播放日韩精品| 亚洲乱码av中文一区二区| 久久久久九九九九| 国产精品久久久久久av下载红粉| 欧美主播福利视频| 91伊人影院在线播放| 91高清免费视频| 久久91精品国产| 亚洲国产精品一区二区三区| 国产精品久久久久久久久久小说| 欧美日韩国产中文精品字幕自在自线| 欧美裸体男粗大视频在线观看| 久久av红桃一区二区小说| 色天天综合狠狠色| 91精品国产色综合久久不卡98口| 国产一区二区视频在线观看| 少妇激情综合网| 精品国产一区二区在线| 中文字幕综合在线| 91国偷自产一区二区三区的观看方式| 欧美国产日本高清在线| 国产97在线播放| 成人激情免费在线| 在线观看国产精品淫| 国产乱人伦真实精品视频| 日韩禁在线播放| 理论片在线不卡免费观看| 在线电影欧美日韩一区二区私密| 精品自拍视频在线观看| 国产一区视频在线播放| 成人精品视频在线| 国产主播喷水一区二区| 久久99亚洲精品| 亚洲无线码在线一区观看| 欧美xxxwww| 亚洲电影免费在线观看| 欧美精品一本久久男人的天堂| 国产精品99久久久久久久久久久久| 亚洲自拍中文字幕| 日韩一区二区三区在线播放| 九九热最新视频//这里只有精品| 亚洲综合日韩中文字幕v在线| 欧美大尺度在线观看| 成人亚洲综合色就1024| 国产精品视频在线观看| 精品视频在线导航| 国产成人激情小视频| 国产精品主播视频| 91经典在线视频| 欧美精品生活片| 国产精品99久久久久久久久久久久| 久久精品成人欧美大片| 久久久久久久999| 精品国产自在精品国产浪潮| 日韩国产在线播放| 欧美日本精品在线| 97精品国产97久久久久久春色| yw.139尤物在线精品视频| 国产亚洲视频中文字幕视频| 久久久国产一区| 国产欧美一区二区三区四区| 国产精品久久久久91| 久久色免费在线视频| 日韩美女av在线| 国产亚洲精品一区二区| 狠狠操狠狠色综合网| 少妇高潮 亚洲精品| 成人乱色短篇合集| 亚洲久久久久久久久久| 亚洲石原莉奈一区二区在线观看| 亚洲精品电影网| 亚洲性视频网站| 九九热最新视频//这里只有精品| 久久久久久免费精品| 亚洲精品久久久久久久久久久久久| 日韩成人性视频| 日韩精品丝袜在线| 国产成人精品在线观看| 国产亚洲欧美日韩精品| 最好看的2019年中文视频| 国产精品夫妻激情| 亚州欧美日韩中文视频| 最近2019中文免费高清视频观看www99| 红桃视频成人在线观看| 日韩中文视频免费在线观看| 亚洲国产成人在线播放| 中文日韩电影网站| 亚洲精品丝袜日韩| 久久人91精品久久久久久不卡| 亚洲激情电影中文字幕| 欧美性色xo影院| 亚洲一区第一页| 一区二区三区四区在线观看视频| 8090理伦午夜在线电影| 国产精品女视频| 久久在线精品视频| 亚洲男人天堂九九视频| www.99久久热国产日韩欧美.com| 欧美日韩一区二区免费视频| 久久久在线观看| 欧美午夜片欧美片在线观看| 亚洲图片制服诱惑| 日韩美女免费线视频| 日韩免费观看高清| 国产亚洲精品久久久久久牛牛| 亚洲专区国产精品| 欧美精品久久久久久久| 欧美精品videosex极品1| 亚洲欧美国产精品va在线观看| 尤物99国产成人精品视频| 精品国产乱码久久久久久婷婷| 久久青草精品视频免费观看| 国产精品爱啪在线线免费观看| 国产精品亚洲欧美导航| 国产精品美女在线| 久久天天躁狠狠躁夜夜av| 91精品国产综合久久香蕉922| 久久久久女教师免费一区| 亚洲无限av看| 亚洲欧美另类在线观看| 久久久精品国产| 91性高湖久久久久久久久_久久99| 一区二区三区在线播放欧美| 欧美激情女人20p| 亚洲精品国产综合久久| 黑人巨大精品欧美一区二区免费| 欧美人与物videos|