﻿
{"id":3249,"date":"2015-09-06T01:00:48","date_gmt":"2015-09-06T01:00:48","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3249"},"modified":"2015-09-06T01:00:48","modified_gmt":"2015-09-06T01:00:48","slug":"asp-net-mvc-jquery-ile-scroll-pagingsayfalama","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-jquery-ile-scroll-pagingsayfalama\/","title":{"rendered":"Asp.NET MVC &#8211; JQuery \u0130le Scroll Paging(Sayfalama)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Web sayfalar\u0131nda verilerimizi listelerken sayfalamaya ihtiya\u00e7 duyuyoruz.Bu ihtiyac\u0131n temel kayna\u011f\u0131 binlerce veriyi tek sayfada yo\u011funla\u015ft\u0131r\u0131p kullan\u0131c\u0131lar\u0131 yormamak olsa da serverdan gelen veri yo\u011funlu\u011funu azaltmak ve sayfa olu\u015fum a\u015famas\u0131ndaki negatif etkileri ortadan kald\u0131rmak gibi fakt\u00f6rlerde i\u015fin i\u00e7ine girmektedir.Bu durumda d\u00fczinelerce sayfalama y\u00f6ntemleri ve algoritmalar\u0131 mevcuttur.Tabi ki de bu algoritmalardan bir tanesinide kendinize \u00f6zg\u00fc olu\u015fturabilirsin.Bu hususta hi\u00e7 bir s\u0131n\u0131rlama olmaks\u0131z\u0131n daha g\u00f6rsel ve animasyonel yap\u0131lar bar\u0131nd\u0131ran y\u00f6ntemlerde icat edebilirsiniz.Velhas\u0131l, \u015fahs\u0131n biri d\u00fc\u015f\u00fcnm\u00fc\u015f ve Scroll Paging diye isimlendirdi\u011fimiz animasyonda tavan yapan bir listeleme mant\u0131\u011f\u0131 olu\u015fturmu\u015f.Asl\u0131nda bu yap\u0131y\u0131 Facebook kullan\u0131c\u0131lar\u0131 kullanmakta ve baz\u0131 internet sitelerinde de kar\u015f\u0131m\u0131za \u00e7\u0131kmaktad\u0131r.Bu makalemizin i\u00e7eri\u011finde Scroll Paging nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 detayl\u0131 bir bi\u00e7imde ad\u0131m ad\u0131m irdeleyece\u011fiz.<\/p>\n<p>\u00d6ncelikle bilmeyenler i\u00e7in Scroll Paging nedir izah edelim.<br \/>\nScroll Paging, bir sayfada listelenen verileri scrollbar arac\u0131l\u0131\u011f\u0131yla sayfalamakt\u0131r.Scrollbar sayfan\u0131n sonuna geldi\u011finde listelenen verinin devam\u0131n\u0131 dinamik olarak Ajax ve JQuery yard\u0131m\u0131yla ilgili alana basmakt\u0131r.H\u0131zl\u0131 \u00f6rnek vermek gerekirse, Facebook anasayfas\u0131na girin ve scrollbar&#8217;\u0131 sayfan\u0131n en a\u015fa\u011f\u0131s\u0131na indirin.K\u0131sa bir y\u00fcklemeden sonra h\u0131zl\u0131ca \u00f6nceki yay\u0131n ak\u0131\u015f\u0131 kar\u015f\u0131n\u0131za gelecektir.\u0130\u015fte \u015fimdi bu mekanizmay\u0131 bu makalede teknik olarak tan\u0131mlayaca\u011f\u0131z. \ud83d\ude09<\/p>\n<p>Yukar\u0131da de\u011findi\u011fi gibi Scroll Paging i\u015flemi i\u00e7in Ajax ve JQuery&#8217;den yard\u0131m alaca\u011f\u0131z.Makalemizde \u00f6rneklendirmeyi Northwind veritaban\u0131yla ger\u00e7ekle\u015ftirece\u011fiz.Hadi ba\u015flayal\u0131m&#8230;<\/p>\n<p>\u00d6ncelikle Visual Studio platformunda Asp.NET MVC projesi olu\u015fturup an\u0131nda Models katman\u0131na bir Linq To Sql dosyas\u0131 at\u0131yoruz ve Northwind veritaban\u0131ndaki Musteriler isimli tabloyu projemize entegre ediyoruz.<\/p>\n<p>\u0130\u015flemlerimizi \u00f6rneklendirmek ama\u00e7l\u0131 bu tablo \u00fczerinden ger\u00e7ekle\u015ftirece\u011fiz.<\/p>\n<p>&#8220;Home(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131 olu\u015fturup, i\u00e7erisindeki &#8220;Index&#8221; Action metodu \u00fczerinde bu i\u015flemi ger\u00e7ekle\u015ftirece\u011fim.Sizler kendi \u00e7al\u0131\u015fman\u0131za g\u00f6re uyarlayabilirsiniz.Bu makalenin t\u00fcm mevzusu bu Action g\u00f6r\u00fcnt\u00fcs\u00fc \u00fczerinde d\u00f6necektir.<\/p>\n<p>\u00d6ncelikle &#8220;Index&#8221; Action&#8217;\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki gibi olu\u015fturuyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        VeriTabaniDataContext Veri = new VeriTabaniDataContext();\r\n        int SayfaBoyutu = 10;\/\/Bir sayfada ka\u00e7 adet listeleme yap\u0131lacak.\r\n\r\n        public ActionResult Index(int? sayfano)\r\n        {\r\n            List&lt;Musteriler&gt; MusteriListesi = null;\r\n            if (sayfano == null)\r\n            {\r\n                MusteriListesi = Veri.Musterilers.OrderByDescending(m =&gt; m.MusteriID).Take(SayfaBoyutu).ToList();\r\n            }\r\n            else\r\n            {\r\n                MusteriListesi = Veri.Musterilers.OrderByDescending(m =&gt; m.MusteriID).Skip(SayfaBoyutu * sayfano.Value).Take(SayfaBoyutu).ToList();\r\n            }\r\n\r\n            if (Request.IsAjaxRequest())\r\n            {\r\n                return PartialView(&quot;~\/Views\/Home\/Partial\/PartialMusteriler.cshtml&quot;, MusteriListesi);\r\n            }\r\n            return View(MusteriListesi);\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu siz incelerken ben izah edeyim.<\/p>\n<ul style=\"list-style-type: square;\">\n<li><strong>4. Sat\u0131r<\/strong>&#8216;da, her listeleme esnas\u0131nda ka\u00e7 veri getirilece\u011fini tutuyoruz.<\/li>\n<li><strong>11. Sat\u0131r<\/strong>&#8216;da, e\u011fer sayfano isimli de\u011fi\u015fken null ise demek oluyor ki sayfalama talep edilmemi\u015ftir.O y\u00fczden ba\u015flang\u0131\u00e7 olarak ilk 10 eleman\u0131 elde ediyoruz.<\/li>\n<li><strong>15. Sat\u0131r<\/strong>&#8216;da, e\u011fer sayfano isimli de\u011fi\u015fken null de\u011fil ise demek oluyor ki sayfalama talep edilmi\u015ftir.O anki sayfano de\u011fi\u015fkeniyle SayfaBoyutu de\u011fi\u015fkeninin de\u011ferleri \u00e7arp\u0131yoruz ve \u00e7\u0131kan sonucu Skip metodu ile ba\u015flang\u0131\u00e7 kabul edip, Take komutu ile SayfaBoyutu de\u011feri kadar yani 10 adet eleman\u0131 elde ediyoruz.<\/li>\n<li><strong>18. Sat\u0131r<\/strong>&#8216;da, sayfan\u0131n Ajax ile talep edilip edilmedi\u011fini kontrol ediyoruz.Buras\u0131 tekni\u011fimizin en can al\u0131c\u0131 komutudur.Sayfa ilk a\u00e7\u0131ld\u0131\u011f\u0131nda Ajax taraf\u0131ndan talep edilmeyecektir.Haliyle ilk 10 veri direkt olarak normal bir Get i\u015flemiyle listelenecektir.Halbuki olay sayfa talep etmeye geldi\u011finde ki bu sayfa taleplerini birazdan Ajax ile ger\u00e7ekle\u015ftirece\u011fimiz i\u00e7in bu taleplerin Ajax formatl\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmemiz gerekmektedir.Bu sat\u0131rda yap\u0131lan kontrol sayesinde hem sayfalaman\u0131n talep edildi\u011fini anlayaca\u011f\u0131z hemde bu talebin Ajax ile ger\u00e7ekle\u015ftirildi\u011fini bilece\u011fiz.<\/li>\n<li><strong>20. Sat\u0131r<\/strong>&#8216;da, e\u011fer bu Action Ajax ile talep edildiyse bu demek oluyor ki sayfalama talep edilmi\u015ftir.Bunu yukar\u0131da da dedi\u011fim gibi View katman\u0131nda birazdan ger\u00e7ekle\u015ftirece\u011fiz.Haliyle bu talep neticesinde elde etti\u011fimiz verileri ilk etapta var olan verilerin alt\u0131na bast\u0131raca\u011f\u0131z.Hatta ilk etapta demekten ziyade, \u00f6nceki yazd\u0131r\u0131lan verilen \u00fczerine bast\u0131raca\u011f\u0131z demek daha do\u011frudur.Bunuda PartialView g\u00f6ndererek ger\u00e7ekle\u015ftirece\u011fiz.Sat\u0131rda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz PartialView&#8217;e verilen dizindeki dosyay\u0131 birazdan olu\u015fturaca\u011f\u0131z.\u015eimdilik adresini vermemiz yeterlidir.<\/li>\n<li><strong>22. Sat\u0131r<\/strong>&#8216;da, e\u011fer Action Ajax ile tetiklenmemi\u015fse bunu ilk a\u00e7\u0131l\u0131\u015f olarak g\u00f6r\u00fcyor ve ilk 10 nesne dolu listeyi normal bir \u015fekilde View&#8217;a g\u00f6nderiyoruz.<\/li>\n<\/ul>\n<p>Evet, art\u0131k Controller katman\u0131m\u0131z t\u00fcm i\u015flemlerimiz i\u00e7in haz\u0131r.\u015eimdi s\u0131ra geldi View katman\u0131n\u0131 d\u00fczenlemeye.<\/p>\n<p>&#8220;Index&#8221; Action metodun View katman\u0131ndaki &#8220;.cshtml&#8221; uzant\u0131l\u0131 dosyas\u0131n\u0131 olu\u015fturuyoruz.Ayriyetten, yukar\u0131da 20. sat\u0131rda dizinini belirtti\u011fimiz PartialView&#8217;i de benzer dizinde &#8220;PartialMusteriler&#8221; ad\u0131nda olu\u015fturuyoruz.Burada kafan\u0131z kar\u0131\u015f\u0131rsa e\u011fer siz direkt olarak &#8220;~\/View\/Home\/&#8212;PartialAdi&#8212;.cshmtl&#8221; olarakta olu\u015fturabilirsiniz.Ben genellikle Partial&#8217;lar\u0131 ilgili View katman\u0131n\u0131n alt\u0131nda bir Partial isimli klas\u00f6r olu\u015fturarak tuttu\u011fum i\u00e7in makalede de ayn\u0131 \u015fekilde \u00f6rneklendirmekteyim.<\/p>\n<p>\u00d6ncelikle &#8220;PartialMusteriler&#8221; isimli Partial dosyam\u0131z\u0131 a\u015fa\u011f\u0131daki gibi d\u00fczenleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@model IEnumerable&lt;Calisma.Models.Musteriler&gt;\r\n    \r\n@foreach (var item in Model)\r\n{\r\n    &lt;div style=&quot;width:300px;border:ridge;&quot;&gt;\r\n        &lt;p&gt;&lt;strong&gt;M\u00fc\u015fteri Ad\u0131 : &lt;\/strong&gt;@item.MusteriAdi&lt;\/p&gt;\r\n        &lt;p&gt;&lt;strong&gt;Adres : &lt;\/strong&gt;@item.Adres&lt;\/p&gt;\r\n        &lt;p&gt;&lt;strong&gt;Posta Kodu : &lt;\/strong&gt;@item.PostaKodu&lt;\/p&gt;\r\n    &lt;\/div&gt;\r\n}\r\n<\/pre>\n<p>\u015eimdi de &#8220;Index&#8221; isimli View dosyam\u0131z\u0131 a\u015fa\u011f\u0131daki gibi d\u00fczenleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@model IEnumerable&lt;Calisma.Models.Musteriler&gt;\r\n\r\n&lt;div style=&quot;border-style:ridge;width:300px;background-color:black;color:white;font-size:25px;&quot;&gt;M\u00fc\u015fteri Listesi&lt;\/div&gt;\r\n&lt;div id=&quot;MusteriListesi&quot;&gt;\r\n    @Html.Partial(&quot;~\/Views\/Home\/Partial\/PartialMusteriler.cshtml&quot;, Model)\r\n&lt;\/div&gt;\r\n<\/pre>\n<p>\u015eimdi bu \u015fekilde projemizi derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman ilk 10 veriyi ekranda g\u00f6rece\u011fiz.<\/p>\n<p>Art\u0131k Scroll Paging ile geri kalan verilerimizi onar onar \u00e7ekelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n    var SayfaSayisi = 0;\r\n\r\n    $(window).scroll(function () {\r\n        \/\/Scroll hareket etti\u011fi zaman devreye girer.\r\n        if ($(window).scrollTop() == $(document).height() - $(window).height()) {\r\n            \/\/Bu algoritma ile ScrollBar'\u0131n sayfan\u0131n en a\u015fa\u011f\u0131 indi\u011fi an\u0131 yakalar\u0131z.\r\n            $.ajax({\r\n                url: '\/Home\/Index',\r\n                data: { sayfano: SayfaSayisi },\r\n                \/\/Index Action metodunun ald\u0131\u011f\u0131 sayfano isimli parametreye SayfaSayisi de\u011fi\u015fkenindeki de\u011feri g\u00f6nderiyoruz.\r\n                success: function (data) {\r\n                    $(&quot;#MusteriListesi&quot;).append(data);\r\n                    SayfaSayisi++;\r\n                }\r\n            });\r\n        }\r\n    });\r\n&lt;\/script&gt;\r\n<\/pre>\n<ul style=\"list-style-type: square;\">\n<li><strong>2. Sat\u0131r<\/strong>&#8216;da, o anki sayfan\u0131n ne oldu\u011funu belirtiyoruz.Her Ajax i\u015flemi sonucu artt\u0131r\u0131lmaktad\u0131r.<\/li>\n<li><strong>4. Sat\u0131r<\/strong>&#8216;da, ScrollBar her hareket etti\u011finde \u00e7al\u0131\u015facak JQuery blo\u011fudur.<\/li>\n<li><strong>6. Sat\u0131r<\/strong>&#8216;da, ScrollBar&#8217;\u0131n her hareketinde i\u015flem yapmayaca\u011f\u0131z.Bizim amac\u0131m\u0131z ScrollBar&#8217;\u0131n sayfan\u0131n en a\u015fa\u011f\u0131s\u0131na indi\u011finde tetiklenecek bir olayd\u0131r.O y\u00fczden bu sat\u0131rdaki algoritmayla ScrollBar&#8217;\u0131n sayfan\u0131n en alt\u0131nda oldu\u011funu hesaplam\u0131\u015f oluyoruz.\n<ul>\n<li><em>$(window).scrollTop()<\/em> komutu, ScrollBar&#8217;\u0131n \u00fcst noktas\u0131yla taray\u0131c\u0131 aras\u0131ndaki mesafeyi matematiksel verir.<\/li>\n<li><em>$(document).height()<\/em> komutu, sayfan\u0131n ScroolBar ile olan dik uzunlu\u011funu verir.<\/li>\n<li><em>$(window).height()<\/em> komutu, sadece taray\u0131c\u0131daki ekran\u0131n dik uzunlu\u011funu verir.<\/li>\n<\/ul>\n<p>Bu \u00fc\u00e7l\u00fc de\u011fi\u015fken ile g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi yap\u0131lan kombinasyonla ScrollBar&#8217;\u0131n sona geldi\u011fini hesaplayabiliyoruz.<\/li>\n<li><strong>13. Sat\u0131r<\/strong>&#8216;da, yap\u0131lan Ajax i\u015flemi sonucu PartialView olarak gelen veriyi &#8220;MusteriListesi&#8221; id de\u011ferine sahip div eleman\u0131na append ile ekliyoruz.append fonksiyonu var olan verilerin alt\u0131na ekleme i\u015flemi ger\u00e7ekle\u015ftiriyor.<\/li>\n<li><strong>14. Sat\u0131r<\/strong>&#8216;da, bir sonraki sayfalama talebi i\u00e7in SayfaSayisi isimli de\u011fi\u015fkenin de\u011ferini 1 artt\u0131r\u0131yoruz.<\/li>\n<\/ul>\n<p>Bu \u015fekilde projemizi derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman Scroll Paging i\u015fleminin ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6receksiniz.Lakin burada bir olas\u0131 hatay\u0131 bilin\u00e7li bir \u015fekilde es ge\u00e7mi\u015f bulunmaktay\u0131m.Asl\u0131nda buna hata demek yanl\u0131\u015f olacakt\u0131r.Buna bir performans kayb\u0131 ya da l\u00fczumsuz server i\u015flemi diye isim verebiliriz.Burada olay\u0131m\u0131z \u015fudur.Scroll Paging ile ScrollBar&#8217;\u0131 a\u015fa\u011f\u0131 indirdik\u00e7e verilerinizi listeleyiniz.Sonuna kadar!!!En sonunda Server&#8217;dan liste bo\u015f gelece\u011fi i\u00e7in Scroll Paging i\u015flemi yap\u0131lmayacakt\u0131r.Lakin ScrollBar her sayfan\u0131n sonuna geldi\u011finde Index Action&#8217;\u0131 yeniden tetiklenecek ve serverda l\u00fczumsuz bir i\u015f y\u00fck\u00fc ortaya \u00e7\u0131kacakt\u0131r.Bu durumu performanstan tutun, sistemin trafi\u011fine kadar negatif sonu\u00e7lar do\u011furabilir.O y\u00fczden script komutlar\u0131m\u0131zda a\u015fa\u011f\u0131daki g\u00fcncellemeyi ger\u00e7ekle\u015ftirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n    var SayfaSayisi = 0;\r\n    var SayfaPost = true;\r\n    \/\/Sayfa hala Post edilebilir durumda m\u0131 de\u011fil mi kontrol\u00fc sa\u011flayan de\u011fi\u015fkendir.\r\n    $(window).scroll(function () {\r\n        if ($(window).scrollTop() == $(document).height() - $(window).height()) {\r\n            if (SayfaPost) {\r\n                $.ajax({\r\n                    url: '\/Home\/Index',\r\n                    data: { sayfano: SayfaSayisi },\r\n                    success: function (data) {\r\n                        if ($.trim(data) == '') {\r\n                            \/\/Server'dan gelen veri bo\u015f ise\r\n                            SayfaPost = false;\r\n                            \/\/SayfaPost de\u011fi\u015fkenini false yap.Bu sayede bir daha Server tetiklenmeyecektir.\r\n                        } else {\r\n                            $(&quot;#MusteriListesi&quot;).append(data);\r\n                            SayfaSayisi++;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    });\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>Evet, art\u0131k Scroll Paging ile sayfalamay\u0131 ger\u00e7ekle\u015ftirip, listenin sonuna gelindi\u011finde de server\u0131 tetiklemeyi durdurmu\u015f olduk.<\/p>\n<p>Asl\u0131nda yaz\u0131m\u0131z i\u00e7erik olarak burada son bulmaktayken ek olarak g\u00f6rsellik katacak bir durumu eklemeyi g\u00f6z ard\u0131 etmiyorum.Scroll Paging yap\u0131l\u0131rken verilerin bodoslama ilgili alana yap\u0131\u015ft\u0131r\u0131lmas\u0131 hi\u00e7 ho\u015f g\u00f6z\u00fckmemektedir.Bu i\u015flem esnas\u0131nda &#8220;Y\u00fckleniyor&#8230;&#8221; gibisinden bir pencere olduk\u00e7a \u015f\u0131k olabilir.<\/p>\n<p>A\u015fa\u011f\u0131da olu\u015fturmu\u015f oldu\u011fum div eleman\u0131n\u0131 Index.cshtml sayfan\u0131zda herhangi bir yere ekleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;div id=&quot;pencere&quot; style=&quot;display:none;width:133px;height:25px;border:0 solid black;position:fixed;top:50%;left:50%;padding:2px;text-align:center;&quot;&gt;\r\n    Y\u00fckleniyorrrrr....\r\n&lt;\/div&gt;\r\n&#x5B;code]\r\n\r\n\u015eimdide script kodlar\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki gibi g\u00fcncellersek e\u011fer her Scroll Paging i\u015fleminde &quot;Y\u00fckleniyor&quot; mesaj\u0131 verilecektir.\r\n&#x5B;code lang=&quot;js&quot;]\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n    var SayfaSayisi = 0;\r\n    var SayfaPost = true;\r\n    $(window).scroll(function () {\r\n        if ($(window).scrollTop() == $(document).height() - $(window).height()) {\r\n            $(&quot;#pencere&quot;).show();\r\n            \/\/ScrollBar sona geldi\u011finde pencereyi g\u00f6ster...\r\n            if (SayfaPost) {\r\n                $.ajax({\r\n                    url: '\/Home\/Index',\r\n                    data: { sayfano: SayfaSayisi },\r\n                    success: function (data) {\r\n                        if ($.trim(data) == '') {\r\n                            SayfaPost = false;\r\n                        } else {\r\n                            $(&quot;#MusteriListesi&quot;).append(data);\r\n                            SayfaSayisi++;\r\n                        }\r\n                        $(&quot;#pencere&quot;).hide();\r\n                        \/\/Ajax i\u015flemleri bittirip, sayfalama neticesinde ilgili verilerin ilgili alana bast\u0131r\u0131lmas\u0131ndan sonra pencereyi kapat.\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    });\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>Bu i\u015flemden sonra makalemizin sonuna gelmi\u015f bulunmaktay\u0131z.Son kez a\u015fa\u011f\u0131daki videodan bu yap\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 net bir \u015fekilde irdeleyebilirsiniz.<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/n1nTQzs-Zig?rel=0&amp;controls=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Web sayfalar\u0131nda verilerimizi listelerken sayfalamaya ihtiya\u00e7 duyuyoruz.Bu ihtiyac\u0131n temel kayna\u011f\u0131 binlerce veriyi tek sayfada yo\u011funla\u015ft\u0131r\u0131p kullan\u0131c\u0131lar\u0131 yormamak olsa da serverdan gelen veri yo\u011funlu\u011funu azaltmak ve sayfa olu\u015fum a\u015famas\u0131ndaki negatif etkileri ortadan kald\u0131rmak gibi fakt\u00f6rlerde&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,11,600,18,19],"tags":[744,745,746,748,283,779],"class_list":["post-3249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-asp-net-mvc","category-asp-net-mvc-5","category-javascript","category-jquery","tag-ajax","tag-asp-net","tag-asp-net-mvc","tag-jquery","tag-mvc","tag-scroll-paging"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=3249"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3249\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=3249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}