﻿
{"id":956,"date":"2012-11-19T15:01:09","date_gmt":"2012-11-19T15:01:09","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=956"},"modified":"2012-11-19T15:31:42","modified_gmt":"2012-11-19T15:31:42","slug":"asp-net-mvc-calisma-mekanizmasi-2","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-calisma-mekanizmasi-2\/","title":{"rendered":"Asp.NET MVC \u00c7al\u0131\u015fma Mekanizmas\u0131 &#8211; 2"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>MVC mekanizmas\u0131n\u0131n kalbine giden yol Global.asax dosyas\u0131ndan ge\u00e7er.Bunu \u015f\u00f6yle \u00f6zetleyebiliriz.Bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-calisma-mekanizmasi-1\/\">Asp.NET MVC \u00c7al\u0131\u015fma Mekanizmas\u0131 \u2013 1<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda, \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m &#8220;OrnekCalisma&#8221; isimli projeden devam edersek e\u011fer, projeyi F5 ile \u00e7al\u0131\u015ft\u0131r\u0131p, Index sayfas\u0131n\u0131 ekranda g\u00f6r\u00fcnt\u00fcleyelim.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/index.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-958\" title=\"index\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/index.png\" alt=\"\" width=\"1168\" height=\"100\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/index.png 1168w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/index-300x25.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/index-1024x87.png 1024w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a><br \/>\nBu yap\u0131daki bir tasar\u0131mla kar\u015f\u0131m\u0131za ekran a\u00e7\u0131lacakt\u0131r.(G\u00f6r\u00fcnt\u00fcden alt k\u0131sm\u0131 keserek \u00e7\u0131kard\u0131m.)<br \/>\nAbout linkine t\u0131klay\u0131p, sayfas\u0131n\u0131n a\u00e7\u0131lmas\u0131n\u0131 bekledikten sonra adres \u00e7ubu\u011funu incelersek e\u011fer;<br \/>\n&#8220;<span style=\"color: #ff9900;\"><em>http:\/\/localhost:2697<strong><span style=\"color: #ff0000;\">\/Home\/About<\/span><\/strong><\/em><\/span>&#8221;<br \/>\ngibi bir adres g\u00f6rece\u011fiz.<\/p>\n<p>K\u0131rm\u0131z\u0131 renkteki kal\u0131n olarak yaz\u0131lm\u0131\u015f k\u0131sma bakarsak e\u011fer, View katman\u0131 alt\u0131ndaki &#8220;Home&#8221; klas\u00f6r\u00fcndeki &#8220;About.aspx&#8221; sayfas\u0131 oldu\u011funu belirtmektedir.E\u011fer Controller ile ili\u015fkilendirmek gerekirse, Home(Controller) Controller i\u00e7indeki, About ismindeki metodumuzdur.<\/p>\n<p>\u015eimdi Global.asax dosyam\u0131z\u0131 inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\npublic class MvcApplication : System.Web.HttpApplication\r\n{\r\npublic static void RegisterRoutes(RouteCollection routes)\r\n{\r\nroutes.IgnoreRoute(&quot;{resource}.axd\/{*pathInfo}&quot;);\r\nroutes.MapRoute(\r\n&quot;Default&quot;, \/\/ Route name\r\n&quot;{controller}\/{action}\/{id}&quot;, \/\/ URL with parameters\r\nnew { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional } \/\/ Parameter defaults\r\n);\r\n}\r\nprotected void Application_Start()\r\n{\r\nAreaRegistration.RegisterAllAreas();\r\nRegisterRoutes(RouteTable.Routes);\r\n}\r\n}\r\n<\/pre>\n<p>\u015eimdi sistemin i\u015fleyi\u015finden bahsedersek e\u011fer, proje ilk \u00e7al\u0131\u015ft\u0131\u011f\u0131 anda Application_Start() metodu \u00e7al\u0131\u015ft\u0131r\u0131lmaktad\u0131r.Bu metod i\u00e7indeki kodlar \u00e7al\u0131\u015ft\u0131r\u0131lmaktad\u0131r.RegisterRoutes() ad\u0131ndaki metodumuz yukar\u0131daki kodlar\u0131 incelersek, Global.asax dosyas\u0131nda olu\u015fturulmu\u015f bir metoddur.\u0130\u00e7ine RouteCollection tipinden routes ad\u0131nda bir parametre al\u0131yor ve bu parametrenin MapRoute() ad\u0131ndaki metodu sayesinde, URL Routing dedi\u011fimiz mekanizmay\u0131 ger\u00e7ekle\u015ftiriyor.<\/p>\n<p>MapRoute() metodunu incelersek e\u011fer, protitipi \u015fu \u015fekildedir.<br \/>\nMapRoute(&#8220;\u0130sim&#8221;,&#8221;Kal\u0131p&#8221;,&#8221;Varsay\u0131lan De\u011ferler&#8221;);<br \/>\n\u015feklinde kullan\u0131lmaktad\u0131r.<\/p>\n<p>\u015eimdi Global.asax&#8217;\u0131m\u0131zdaki MapRoute() metodunundaki yap\u0131y\u0131 daha rahat incelemek i\u00e7in tekrardan a\u015fa\u011f\u0131ya alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n routes.MapRoute(\r\n                &quot;Default&quot;, \/\/ Route ad\u0131n\u0131 Default olarak vermi\u015f.\r\n                &quot;{controller}\/{action}\/{id}&quot;, \/\/ Adres \u00e7ubu\u011fundaki URL yap\u0131s\u0131na ne kadar \u00e7ok benzedi\u011fine bak\u0131n.Zaten yukar\u0131larda bahsetti\u011fimiz gibi, Controller ad\u0131 ve o Controller'deki ActionResult tipinden metodun ismi.\r\n                new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional }\/\/Buras\u0131 ise varsay\u0131lan ayarlar mevcut.Projemiz ilk \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda a\u00e7\u0131lacak olan sayfa buradan belirtiliyor.\r\n<\/pre>\n<table style=\"width: 100%;\">\n<tbody>\n<tr>\n<td><center>{controller}\/{action}\/{id}<\/center><\/td>\n<\/tr>\n<tr>\n<td><center>Bu yap\u0131ya dikkat edersek, bu yaz\u0131m\u0131z\u0131n ba\u015flar\u0131nda bahsetti\u011fimiz gibi bir URL yap\u0131s\u0131 mevcut.Bu URL yap\u0131s\u0131 About linkine t\u0131klad\u0131\u011f\u0131m\u0131z zaman, adres \u00e7ubu\u011funda olu\u015fan linkle ayn\u0131 yap\u0131dad\u0131r.\u0130ncelemek i\u00e7in a\u015fa\u011f\u0131daki resimle k\u0131yaslay\u0131n\u0131z.<\/center><\/td>\n<\/tr>\n<tr>\n<td><center><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/About.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-949\" title=\"About\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/About.png\" alt=\"\" width=\"186\" height=\"16\" \/><\/a><\/center><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Burada dikkat \u00e7eken bir nokta mevcut.Linkimiz <em>\/Home\/About<\/em> yap\u0131s\u0131ndayken, Global.asax dosyam\u0131zdaki URL yap\u0131s\u0131nda birde &#8220;id&#8221; isminde bir alan mevcut.Ama bizim linkimizde <em>&#8220;About&#8221; tan sonra id yap\u0131s\u0131 yoktu.Bunun nedeni varsay\u0131lan olarak opsiyonel verilmesidir.<br \/>\n<\/em><\/p>\n<table style=\"width: 100%;\">\n<tbody>\n<tr>\n<td><center>new { controller = &#8220;Home&#8221;, action = &#8220;Index&#8221;, id = UrlParameter.Optional }<\/center><\/td>\n<\/tr>\n<tr>\n<td><center>Bu yap\u0131ya dikkat edersek, projemiz ilk a\u00e7\u0131ld\u0131\u011f\u0131nda a\u00e7\u0131lacak olan sayfay\u0131 buradan belirtiyoruz.&#8221;<strong>action<\/strong>&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcne, ActionResult metodumuzun ismini yaz\u0131yoruz.&#8221;<strong>controller<\/strong>&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcne ise ActionResult metodumuzun bulundu\u011fu Controller&#8217;\u0131 yaz\u0131yoruz.<\/center><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>E\u011fer Global.asax dosyam\u0131zdan varsay\u0131lan olarak a\u00e7\u0131lan sayfay\u0131 About sayfas\u0131 olarak de\u011fi\u015ftirirsek, proje ilk a\u00e7\u0131ld\u0131\u011f\u0131 anda About dosyas\u0131 a\u00e7\u0131lacakt\u0131r.<a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-calisma-mekanizmasi-1\/\">Asp.NET MVC \u00c7al\u0131\u015fma Mekanizmas\u0131 \u2013 1<\/a>\u00a0yaz\u0131mda bahsetti\u011fim gibi, HomeController dosyas\u0131nda ilk olarak Index metodu talep ediliyordu.Bunun sebebinin Global.asax dosyas\u0131nda oldu\u011funu s\u00f6ylemi\u015ftim.\u0130\u015fte cevab\u0131 burada.Varsay\u0131lan olarak About sayfas\u0131n\u0131 yaparsak, bundan sonra ilk a\u00e7\u0131l\u0131\u015fta Index isimli metodu de\u011fil, About isimli metodu \u00e7a\u011f\u0131racakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class MvcApplication : System.Web.HttpApplication\r\n    {\r\n        public static void RegisterRoutes(RouteCollection routes)\r\n        {\r\n            routes.IgnoreRoute(&quot;{resource}.axd\/{*pathInfo}&quot;);\r\n            routes.MapRoute(\r\n                &quot;Default&quot;, \/\/ Route name\r\n                &quot;{controller}\/{action}\/{id}&quot;, \/\/ URL with parameters\r\n                new { controller = &quot;Home&quot;, action = &quot;About&quot;, id = UrlParameter.Optional } \/\/ Parameter defaults\r\n            );\r\n        }\r\n        protected void Application_Start()\r\n        {\r\n            AreaRegistration.RegisterAllAreas();\r\n            RegisterRoutes(RouteTable.Routes);\r\n        }\r\n<\/pre>\n<p>\u00d6rnek olarak yukar\u0131daki gibi Global.asax dosyam\u0131z\u0131 de\u011fi\u015ftirirsek, ilk a\u00e7\u0131l\u0131\u015fta About sayfas\u0131 a\u00e7\u0131lacakt\u0131r.<\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi URL kal\u0131plar\u0131n\u0131 Global.asax dosyas\u0131ndan bu \u015fekilde ayarl\u0131yoruz.<\/p>\n<p>Peki biz bu URL yap\u0131s\u0131ndan ba\u015fka bir yap\u0131 olu\u015fturabilir miyiz? diye sorarsan\u0131z e\u011fer, tabikide olu\u015fturabiliriz.<\/p>\n<p>MapRoute() metodunu ben a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftiriyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            routes.MapRoute(\r\n              &quot;Default&quot;, \/\/ Route name\r\n              &quot;{Isim}\/{controller}\/{action}\/{id}&quot;, \/\/ URL with parameters\r\n              new { controller = &quot;Home&quot;, action = &quot;About&quot;, id = UrlParameter.Optional } \/\/ Parameter defaults\r\n          );\r\n<\/pre>\n<p>Not:&#8221;{ }&#8221;(s\u00fcsl\u00fc parantez) i\u00e7ine yaz\u0131lan isimler URL Routing yap\u0131s\u0131nda de\u011fi\u015fken mant\u0131\u011f\u0131 ta\u015f\u0131maktad\u0131r.<br \/>\nE\u011fer bu \u015fekilde projemi \u00e7al\u0131\u015ft\u0131r\u0131rsam ne olacak bakal\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/hata.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/hata.png\" alt=\"\" title=\"hata\" width=\"544\" height=\"223\" class=\"aligncenter size-full wp-image-971\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/hata.png 544w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/11\/hata-300x122.png 300w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/a><br \/>\nG\u00f6r\u00fcnt\u00fcde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi hata alaca\u011f\u0131z.Ben istedim ki, benim bu projemin URL yap\u0131s\u0131nda isim yazd\u0131ktan sonra, Controller ve Action isimleri yazs\u0131n.Ama bu hatan\u0131n sebebi, &#8220;Isim&#8221; ad\u0131nda bir yap\u0131y\u0131 yazmam\u0131zd\u0131r.Eee biz yazmad\u0131k, varsay\u0131lan olarak de\u011feride belli de\u011fil, haliyle hata verdi program.\u015eimdilik biz manuel olarak elimizle yaz\u0131p deneyelim, sonrada varsay\u0131lan de\u011ferini yaz\u0131p deneyelim.<br \/>\n&#8220;http:\/\/localhost:2697\/Gencay\/Home\/About&#8221;<br \/>\nE\u011fer bu \u015fekilde taray\u0131c\u0131n\u0131n adres \u00e7ubu\u011funa yazar ve entera basarsak, sayfam\u0131z gelecektir.Isim de\u011fi\u015fkenine manuelde olsa bir de\u011fer yazd\u0131k.<br \/>\nVarsay\u0131lan olarak Isim de\u011fi\u015fkenine de\u011fer verirsek,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nroutes.MapRoute(\r\n              &quot;Default&quot;, \/\/ Route name\r\n              &quot;{Isim}\/{controller}\/{action}\/{id}&quot;, \/\/ URL with parameters\r\n              new { controller = &quot;Home&quot;, action = &quot;About&quot;, id = UrlParameter.Optional, Isim = &quot;GG&quot; } \/\/ Parameter defaults\r\n          );\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, Isim de\u011fi\u015fkenine varsay\u0131lan olarak &#8220;GG&#8221; de\u011ferini verdim.Projemizi ba\u015flatt\u0131\u011f\u0131m\u0131z zaman, varsay\u0131lan ekran\u0131m\u0131z sorunsuz ac\u0131lmaktad\u0131r.Herhangi bir link \u00fczerine geldi\u011fimde, &#8220;GG&#8221; ismindeki de\u011ferimiz linkin yap\u0131s\u0131nda g\u00f6z\u00fckmektedir.Bunu sa\u011flayan &#8220;Html.ActionLink&#8221; metodudur.Global.asax dosyas\u0131yla etkile\u015fim sonucunda bu \u015fekilde kal\u0131b\u0131 \u00e7\u0131kart\u0131yor.<\/p>\n<p>Bu yaz\u0131m\u0131zda Asp.NET MVC&#8217;nin Global.asax ile olan ba\u011f\u0131ndan bahsetmi\u015f olduk.<br \/>\nBir sonraki yaz\u0131m\u0131zda g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar<\/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>MVC mekanizmas\u0131n\u0131n kalbine giden yol Global.asax dosyas\u0131ndan ge\u00e7er.Bunu \u015f\u00f6yle \u00f6zetleyebiliriz.Bir \u00f6nceki Asp.NET MVC \u00c7al\u0131\u015fma Mekanizmas\u0131 \u2013 1 ba\u015fl\u0131kl\u0131 yaz\u0131mda, \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m &#8220;OrnekCalisma&#8221; isimli projeden devam edersek e\u011fer, projeyi F5 ile \u00e7al\u0131\u015ft\u0131r\u0131p, Index sayfas\u0131n\u0131 ekranda&#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],"tags":[746,286,283],"class_list":["post-956","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","tag-asp-net-mvc","tag-global-asax","tag-mvc"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/956","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=956"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/956\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}