﻿
{"id":3312,"date":"2015-09-26T14:22:55","date_gmt":"2015-09-26T14:22:55","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3312"},"modified":"2015-09-26T14:22:55","modified_gmt":"2015-09-26T14:22:55","slug":"asp-net-mvcde-tempdata-ile-veri-tasima-ve-actionlar-arasinda-veri-transferi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvcde-tempdata-ile-veri-tasima-ve-actionlar-arasinda-veri-transferi\/","title":{"rendered":"Asp.NET MVC&#8217;de TempData \u0130le Veri Ta\u015f\u0131ma ve Actionlar Aras\u0131nda Veri Transferi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bildi\u011finiz gibi Asp.NET MVC mimarisinde genellikle verileri ta\u015f\u0131mak i\u00e7in ViewBag ve ViewData nesnelerini\u00a0kullan\u0131r\u0131z.Bu nesnelerin\u00a0yan\u0131nda daha esnek bir \u00e7al\u0131\u015fma prensibine sahip olan TempData kontrol\u00fcn\u00fc sizlere tan\u0131taca\u011f\u0131m.Tabi ki de yaz\u0131m\u0131z\u0131 dahada anlamland\u0131rmak i\u00e7in bu \u00fc\u00e7 kontrol \u00fczerinden seyredece\u011fiz ve aralar\u0131ndaki temel fark\u0131 net bir \u015fekilde g\u00f6rece\u011fiz.<\/p>\n<p>\u00d6ncelikle ViewBag ve ViewData nesnelerini, TempData nesnesinde kar\u015f\u0131la\u015ft\u0131rma yapabilmek i\u00e7in hemen tan\u0131tal\u0131m.<\/p>\n<p><strong>ViewData Nesnesi<\/strong><br \/>\nController ile ilgili Action aras\u0131nda ba\u011f kuran bir veri ta\u015f\u0131ma nesnesidir.ViewDataDictionary(ViewData) s\u0131n\u0131f\u0131 ile veri ta\u015f\u0131makta olup a\u015fa\u011f\u0131daki gibi bir kullan\u0131m\u0131 vard\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            ViewData&#x5B;&quot;Ad&quot;] = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi k\u00f6\u015feli parantezler i\u00e7ine verdi\u011fimiz &#8220;key\/value&#8221; syntax sayesinde de\u011ferine ula\u015fabilece\u011fimiz bir yap\u0131 sunmaktad\u0131r.<\/p>\n<p><strong>ViewBag Nesnesi<\/strong><br \/>\nViewBag nesnesi Run Time&#8217;da olu\u015fan ve dinamik bir yap\u0131 sergileyen veri ta\u015f\u0131ma nesnesidir.<br \/>\nKullan\u0131m\u0131 a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            ViewBag.Ad = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi ViewBag yaz\u0131p .(nokta) dedi\u011fimiz zaman verdi\u011fimiz herhangi bir isim Run Time an\u0131nda olu\u015fturulacak de\u011fi\u015fkeni tan\u0131mlamaktad\u0131r.\u0130stedi\u011finiz ismi verebilirsiniz.Bir nevi anlayaca\u011f\u0131n\u0131z ViewData&#8217;n\u0131n dinamik(Run Time Binding) halidir.<\/p>\n<p><strong>TempData Nesnesi<\/strong><br \/>\nYukar\u0131daki iki nesneyle temelde ayn\u0131 veri ta\u015f\u0131ma i\u015flevini g\u00f6ren TempData nesnesi, ViewData gibi bir kullan\u0131m tarz\u0131na sahiptir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            TempData&#x5B;&quot;Ad&quot;] = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n<\/pre>\n<p><strong>Peki bu \u00fc\u00e7 nesneninden birbirinden ay\u0131ran \u00f6zellikleri nelerdir?<\/strong><br \/>\nBu sorunun cevab\u0131n\u0131 ViewBag nesnesinden ba\u015flayarak verelim.<br \/>\nViewBag nesnesini dinamik(dynamic) tipte bir nesne oldu\u011fundan dolay\u0131, olas\u0131 hatalar Compile Time(derleme zaman\u0131)&#8217;da de\u011fil Run Time(\u00e7al\u0131\u015fma zaman\u0131)&#8217;da yakalanacakt\u0131r.Bu fark yan\u0131nda s\u00f6z dizimiyle beraber teknik a\u00e7\u0131dan ViewData nesnesinden hi\u00e7 bir fark\u0131 yoktur.<\/p>\n<p>TempData nesnesine gelirsek e\u011fer, di\u011fer ikisine nazaran en b\u00fcy\u00fck fark\u0131 yaratmaktad\u0131r.ViewBag ve ViewData nesneleri o anki HTTP istek i\u00e7erisinde ge\u00e7erlidir ve ya\u015fam d\u00f6ng\u00fcleri bir sonraki iste\u011fe kadard\u0131r.Haliyle genellikle tek Action metod ve o Action metoda ba\u011fl\u0131 View \u00fczerinde tek seferlik i\u015flev g\u00f6rmektedirler.Lakin TempData nesnesi, o anki HTTP ister taraf\u0131ndan \u00fcretilip bir ve birden fazla View ve Action \u00fczerinde kullan\u0131m esnekli\u011fi sunmaktad\u0131r.Bu anlamda ya\u015fam d\u00f6ng\u00fcs\u00fc di\u011fer ikisine nazaran daha geni\u015ftir.<\/p>\n<p>Art\u0131k bu makalemizde temel i\u00e7erik olarak te\u015fkil edecek olan TempData nesnesinin bu esnekli\u011fi ve Action metodlar aras\u0131nda h\u0131zl\u0131 veri ta\u015f\u0131mas\u0131na ge\u00e7i\u015f yapabiliriz.<\/p>\n<p>\u015eimdi a\u015fa\u011f\u0131daki kod yap\u0131s\u0131n\u0131 olu\u015fturup inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n\r\n            ViewData&#x5B;&quot;Veri&quot;] = &quot;Bu bir ViewData'da ta\u015f\u0131nan veridir.&quot;;\r\n            ViewBag.Veri = &quot;Bu bir ViewBag'de ta\u015f\u0131nan veridir.&quot;;\r\n            TempData&#x5B;&quot;Veri&quot;] = &quot;Bu bir TempDate'da ta\u015f\u0131nan veridir.&quot;;\r\n\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Hemen Index.cshtml sayfam\u0131z\u0131da a\u015fa\u011f\u0131daki gibi olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@ViewData&#x5B;&quot;Veri&quot;]&lt;br \/&gt;\r\n@ViewBag.Veri&lt;br \/&gt;\r\n@TempData&#x5B;&quot;Veri&quot;]\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3316\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi.png\" alt=\"Asp.NET MVC'de TempData \u0130le Veri Ta\u015f\u0131ma ve Actionlar Aras\u0131nda Veri Transferi\" width=\"332\" height=\"113\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi.png 332w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-300x102.png 300w\" sizes=\"auto, (max-width: 332px) 100vw, 332px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi t\u00fcm veri ta\u015f\u0131ma kontrollerimiz temel i\u015flevi olan veri transferini View katman\u0131nda ger\u00e7ekle\u015ftirmi\u015ftir.<\/p>\n<p>\u015eimdi a\u015fa\u011f\u0131daki kullan\u0131m\u0131 inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n\r\n            ViewData&#x5B;&quot;Veri&quot;] = &quot;Bu bir ViewData'da ta\u015f\u0131nan veridir.&quot;;\r\n            ViewBag.Veri = &quot;Bu bir ViewBag'de ta\u015f\u0131nan veridir.&quot;;\r\n            TempData&#x5B;&quot;Veri&quot;] = &quot;Bu bir TempDate'da ta\u015f\u0131nan veridir.&quot;;\r\n\r\n            return RedirectToAction(&quot;Ornek&quot;);\r\n        }\r\n\r\n        public ActionResult Ornek()\r\n        {\r\n            var ViewDataVeri = ViewData&#x5B;&quot;Veri&quot;];\r\n            var ViewBagVeri = ViewBag.Veri;\r\n            var TempDateVeri = TempData&#x5B;&quot;Veri&quot;];\r\n\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer, Index Action&#8217;\u0131nda olu\u015fturulan veri ta\u015f\u0131ma nesnelerimizi Ornek Action&#8217;\u0131nda kullanmaya \u00e7al\u0131\u015f\u0131yoruz.Projeyi \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman \u00f6ncelikle Index Action&#8217;\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m ve ard\u0131ndan Ornek Action&#8217;\u0131na bir y\u00f6nlendirme yap\u0131lacakt\u0131r.Bakal\u0131m Index Action&#8217;\u0131n\u0131nda y\u00fcklenen veri elemanlar\u0131m\u0131z Ornek Action&#8217;\u0131na veri transferini sa\u011flayabilecekler mi?<\/p>\n<div id=\"attachment_3318\" style=\"width: 275px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3318\" class=\"wp-image-3318 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-2.png\" alt=\"Asp.NET MVC'de TempData \u0130le Veri Ta\u015f\u0131ma ve Actionlar Aras\u0131nda Veri Transferi - 2\" width=\"265\" height=\"56\" \/><\/a><p id=\"caption-attachment-3318\" class=\"wp-caption-text\">G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi ViewData bo\u015f geldi.<\/p><\/div>\n<div id=\"attachment_3319\" style=\"width: 278px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-3.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3319\" class=\"wp-image-3319 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-3.png\" alt=\"Asp.NET MVC'de TempData \u0130le Veri Ta\u015f\u0131ma ve Actionlar Aras\u0131nda Veri Transferi - 3\" width=\"268\" height=\"57\" \/><\/a><p id=\"caption-attachment-3319\" class=\"wp-caption-text\">G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi ViewBag&#8217;te bo\u015f geldi.<\/p><\/div>\n<div id=\"attachment_3320\" style=\"width: 424px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-4.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3320\" class=\"wp-image-3320 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-4.png\" alt=\"Asp.NET MVC'de TempData \u0130le Veri Ta\u015f\u0131ma ve Actionlar Aras\u0131nda Veri Transferi - 4\" width=\"414\" height=\"70\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-4.png 414w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/09\/Asp.NET-MVCde-TempData-\u0130le-Veri-Ta\u015f\u0131ma-ve-Actionlar-Aras\u0131nda-Veri-Transferi-4-300x51.png 300w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><\/a><p id=\"caption-attachment-3320\" class=\"wp-caption-text\">Ama TempData veriyi ta\u015f\u0131may\u0131 ba\u015farabildi.<\/p><\/div>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi TempDate nesnesi sayesinde Asp.NET MVC mimarisinde Actionlar aras\u0131nda rahat\u00e7a veri transfer edebiliyoruz.Lakin burada bir hususa dikkat edilmesi gerekiyor.<\/p>\n<p>TempData ile tutulan veri sayfa refresh ya da Post &#8211; Back edildi\u011fi zaman u\u00e7up gitmektedir.B\u00f6yle bir durumda olas\u0131 binlerce hatayla kar\u015f\u0131la\u015fabilir, neye u\u011frad\u0131\u011f\u0131n\u0131za \u015fa\u015f\u0131rabilirsiniz.O y\u00fczden Action&#8217;lar aras\u0131nda ta\u015f\u0131nacak her veriyi TempData ile tutman\u0131z \u00e7okta sa\u011flam temellere dayanan bir in\u015faa s\u00fcreci g\u00f6stermemektedir.<\/p>\n<p>E\u011fer amac\u0131n\u0131z k\u00fc\u00e7\u00fck ve anl\u0131k verileri Action&#8217;lar aras\u0131nda transfer etmek ise TempData&#8217;y\u0131 kullanman\u0131z\u0131 tavsiye ederim.<\/p>\n<p>Bu yaz\u0131m\u0131z\u0131nda sonuna gelmi\u015f bulunmaktay\u0131z.<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\nHepinizi iyi \u00e7al\u0131\u015fmalar diliyorum&#8230;<\/p>\n<p>Kaynak : http:\/\/www.muratoner.net\/makale\/aspnet-mvc-viewbag-viewdata-tempdata-ile-veri-tasima-1488.html, http:\/\/www.aspmvcnet.com\/tr\/m\/razor\/viewbag-viewdata-ve-tempdata-asp-net-mvc-3-kullanimi-ve-farklari.html<\/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>Bildi\u011finiz gibi Asp.NET MVC mimarisinde genellikle verileri ta\u015f\u0131mak i\u00e7in ViewBag ve ViewData nesnelerini\u00a0kullan\u0131r\u0131z.Bu nesnelerin\u00a0yan\u0131nda daha esnek bir \u00e7al\u0131\u015fma prensibine sahip olan TempData kontrol\u00fcn\u00fc sizlere tan\u0131taca\u011f\u0131m.Tabi ki de yaz\u0131m\u0131z\u0131 dahada anlamland\u0131rmak i\u00e7in bu \u00fc\u00e7 kontrol&#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":[11,600],"tags":[812,810,809,811,537,291],"class_list":["post-3312","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-mvc","category-asp-net-mvc-5","tag-compile-time","tag-run-time","tag-run-time-binding","tag-tempdata","tag-viewbag","tag-viewdata"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3312","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=3312"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3312\/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=3312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}