﻿
{"id":2719,"date":"2014-06-07T19:13:28","date_gmt":"2014-06-07T19:13:28","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=2719"},"modified":"2014-06-07T19:13:28","modified_gmt":"2014-06-07T19:13:28","slug":"asp-net-mvc-5-attribute-ile-routing-yonlendirmesiattribute-routing","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-5-attribute-ile-routing-yonlendirmesiattribute-routing\/","title":{"rendered":"Asp.NET MVC 5 &#8211; Attribute \u0130le Routing Y\u00f6nlendirmesi[Attribute Routing]"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Asp.NET MVC 5 s\u00fcr\u00fcm\u00fc \u00f6ncesinde Routing i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-url-routing-semasini-fiziksel-kabuklama\/\" target=\"_blank\">Asp.NET MVC &#8211; URL Routing \u015eemas\u0131n\u0131 Fiziksel Kabuklama<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda g\u00fczel bir \u015fekilde irdelemi\u015ftik.Bu yaz\u0131mda ise Asp.NET MVC 5 projesinde Attribute ile olduk\u00e7a k\u0131sa ve kolay bir \u015fekilde Routing y\u00f6nlendirmesini inceleyece\u011fiz.<br \/>\n<!--more--><br \/>\nAsp.NET MVC 5 ile Attribute Routing diye nitelendirilen y\u00f6nlendirme tekni\u011fini kullanabilmek i\u00e7in \u00f6ncelikle yapmam\u0131z gereken temel a\u015fama &#8220;RouteConfig.cs&#8221; s\u0131n\u0131f\u0131n\u0131n &#8220;RegisterRoutes&#8221; isimli static metodunda &#8220;routes.MapMvcAttributeRoutes();&#8221; metodunu \u00e7al\u0131\u015ft\u0131rmakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public static void RegisterRoutes(RouteCollection routes)\r\n        {\r\n            routes.IgnoreRoute(&quot;{resource}.axd\/{*pathInfo}&quot;);\r\n            routes.MapMvcAttributeRoutes(); ********\r\n            routes.MapRoute(\r\n                name: &quot;Default&quot;,\r\n                url: &quot;{controller}\/{action}\/{id}&quot;,\r\n                defaults: new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional }\r\n            );\r\n        }\r\n<\/pre>\n<p>Yukar\u0131da &#8220;RouteConfig.cs&#8221; s\u0131n\u0131f\u0131n\u0131n i\u00e7eri\u011fini g\u00f6rmektesiniz.Dikkat ederseniz bahsetti\u011fim metodu y\u0131ld\u0131zlarla(*) g\u00f6sterdi\u011fim alanda \u00e7a\u011f\u0131rd\u0131m.<\/p>\n<p>Ek olarak Attribute Routing y\u00f6nteminde kullanaca\u011f\u0131m\u0131z Attribute&#8217;un prototipi a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&#x5B;Route(&quot;yonlendirme-adresi&quot;)]\r\n<\/pre>\n<p>Art\u0131k bu i\u015flemi yapt\u0131ktan sonra Attribute Routing y\u00f6nlendirmelerini h\u0131zl\u0131 bir \u015fekilde yapabiliriz.<\/p>\n<p>Haz\u0131rl\u0131k olarak a\u015fa\u011f\u0131da a\u015fama a\u015fama Routing tekni\u011fini g\u00f6rmeden \u00f6nce, \u00fczerinde \u00f6rneklendirme yapaca\u011f\u0131m\u0131z &#8220;Home(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015fturup i\u00e7erisinde &#8220;Index&#8221; ve &#8220;About&#8221; isimlerinde Action metodlar\u0131m\u0131z\u0131 olu\u015ftural\u0131m.<\/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            ViewBag.Message = &quot;Anasayfa&quot;;\r\n            return View();\r\n        }\r\n        public ActionResult About()\r\n        {\r\n            ViewBag.Message = &quot;Hakk\u0131mda&quot;;\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukarda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi haz\u0131rl\u0131klar\u0131m\u0131z yapt\u0131k.Art\u0131k Attribute Routing tekni\u011fimizin a\u015fama a\u015fama anlat\u0131m\u0131na ge\u00e7ebiliriz.<br \/>\n<strong>1. Basit(Sade) Routing<\/strong><br \/>\nHerhangi bir Controller s\u0131n\u0131f\u0131nda bulunan herhangi bir Action metoda basit(sade) bir \u015fekilde yani parametresiz bir Routing(y\u00f6nlendirme) i\u015flemi nas\u0131l yap\u0131l\u0131r inceleyelim.(<em><span style=\"color: #c0c0c0;\">Tabi biz burada yukar\u0131da haz\u0131rlad\u0131\u011f\u0131m\u0131z &#8220;Home(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131n\u0131 ve i\u00e7indeki Action metodlar\u0131n\u0131 kullanarak \u00f6rneklendirme yapaca\u011f\u0131z.<\/span><\/em>)<\/p>\n<p>Mesela &#8220;Home(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131m\u0131zda bulunan &#8220;Index&#8221; isimli Action metoda Attribute Routing ile y\u00f6nlendirme i\u015flemi yapal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        .\r\n        .\r\n        .\r\n        &#x5B;Route(&quot;Anasayfa&quot;)]\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n        .\r\n        .\r\n        .\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;[Route]&#8221; Attribute&#8217;u ile y\u00f6nlendirme i\u015flemimizi yap\u0131yoruz.&#8221;Index&#8221; Action metodunu &#8220;Anasayfa&#8221; de\u011ferine y\u00f6nlendiriyoruz.<br \/>\nProgram\u0131m\u0131z\u0131 derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ise,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-2731\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-300x161.png\" alt=\"asp.net 5 - attribute routing\" width=\"300\" height=\"161\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-300x161.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing.png 557w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nekran g\u00f6r\u00fcnt\u00fcs\u00fcnde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi y\u00f6nlendirme ba\u015far\u0131l\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirilmi\u015f olacakt\u0131r.<\/p>\n<p><span style=\"color: #008000;\">Attribute Routing ile y\u00f6nlendirilmi\u015f Action metodlara ActionLink metodu ile y\u00f6nlendirme yaparsak e\u011fer olu\u015fturulan link nas\u0131l oluyormu\u015f hemen inceleyelim.(<em>Bu g\u00f6z\u00fcmden ka\u00e7ar m\u0131, ka\u00e7maz! \ud83d\ude42 <\/em>)<\/span><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@Html.ActionLink(&quot;Anasayfa&quot;, &quot;Index&quot;, &quot;Home&quot;)\r\n<\/pre>\n<p>Program\u0131m\u0131z\u0131 derleyip \u00e7al\u0131\u015ft\u0131ral\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-2.png\" alt=\"asp.net 5 - attribute routing 2\" width=\"191\" height=\"54\" class=\"aligncenter size-full wp-image-2733\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Attribute Routing ile y\u00f6nlendirilmi\u015f de\u011ferde bir link yap\u0131land\u0131r\u0131lmas\u0131 ger\u00e7ekle\u015ftiriliyor.<br \/>\n<strong>2. Parametreli Routing<\/strong><br \/>\n\u015eimdide, herhangi bir Controller s\u0131n\u0131f\u0131nda bulunan herhangi bir Action metoda parametreli bir \u015fekilde Routing(y\u00f6nlendirme) i\u015flemi nas\u0131l yap\u0131l\u0131r inceleyelim.(<em>Tabi ki de gene yukar\u0131daki s\u0131n\u0131flar\u0131m\u0131zdan \u00f6rneklendirme yapaca\u011f\u0131z.<\/em>)<\/p>\n<p>Bu \u00f6rneklendirmemizde ise &#8220;Home(Controller).cs&#8221; Controller s\u0131n\u0131f\u0131m\u0131zdaki &#8220;About&#8221; isimli Action metodumuzu kullanal\u0131m.&#8221;About&#8221; Action metodumuza &#8220;ad&#8221; ve &#8220;soyad&#8221; isimli iki parametre g\u00f6nderelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        .\r\n        .\r\n        .\r\n        &#x5B;Route(&quot;Hakkimizda\/{ad}\/{soyad}&quot;)]\r\n        public ActionResult About(string ad, string soyad)\r\n        {\r\n            ViewBag.Message = ad + &quot; &quot; + soyad;\r\n            return View();\r\n        }\r\n        .\r\n        .\r\n        .\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kodu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman ise,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-3-300x249.png\" alt=\"asp.net 5 - attribute routing 3\" width=\"300\" height=\"249\" class=\"aligncenter size-medium wp-image-2737\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-3-300x249.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-3.png 345w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nekran g\u00f6r\u00fcnt\u00fcs\u00fcnde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi y\u00f6nlendirme ger\u00e7ekle\u015ftiriliyor.Taray\u0131c\u0131dan manuel olarak kendi ad ve soyad\u0131m\u0131 verdi\u011fim i\u00e7in ekranda benim ismim ge\u00e7mektedir.<\/p>\n<p>E\u011fer bu \u015fekilde de ActionLink metodunu denersek a\u015fa\u011f\u0131daki gibi bir link yap\u0131land\u0131rmas\u0131 ger\u00e7ekle\u015ftirmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@Html.ActionLink(&quot;Hakk\u0131mda&quot;, &quot;About&quot;, &quot;Home&quot;, new { ad = &quot;Gizem&quot;, soyad = &quot;IsIk&quot; }, null)\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-5-attribute-routing-4.png\" alt=\"asp.net 5 - attribute routing 4\" width=\"267\" height=\"50\" class=\"aligncenter size-full wp-image-2739\" \/><\/a><\/p>\n<p>Sonu\u00e7 olarak kompleks olmayan y\u00f6nlendirme i\u015flemlerini Attribute Routing ile ger\u00e7ekle\u015ftirebilir, h\u0131z\u0131n\u0131za h\u0131z katabilirsiniz.Basit isimlendirmelerde \u00e7ok pratik bir y\u00f6ntem oldu\u011fu i\u00e7in zamandan b\u00fcy\u00fck tasarruf sa\u011flam\u0131\u015f olacaks\u0131n\u0131z.<\/p>\n<p>Hepinize iyi \u00e7al\u0131\u015fmalar diliyor, sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fme \u00fcmidiyle bu yaz\u0131m\u0131 burada sonland\u0131r\u0131yorum.<\/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>Asp.NET MVC 5 s\u00fcr\u00fcm\u00fc \u00f6ncesinde Routing i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 Asp.NET MVC &#8211; URL Routing \u015eemas\u0131n\u0131 Fiziksel Kabuklama ba\u015fl\u0131kl\u0131 yaz\u0131mda g\u00fczel bir \u015fekilde irdelemi\u015ftik.Bu yaz\u0131mda ise Asp.NET MVC 5 projesinde Attribute ile olduk\u00e7a k\u0131sa ve&#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":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,600,345],"tags":[760,602,601,385],"class_list":["post-2719","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","category-asp-net-mvc-5","category-mvc-4-0","tag-asp-net-mvc-5","tag-attribute-routing","tag-route","tag-routing"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2719","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=2719"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2719\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=2719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=2719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=2719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}