[{"data":1,"prerenderedAt":1985},["ShallowReactive",2],{"navigation":3,"categories":339,"/dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler":577},[4,173,210,235],{"title":5,"path":6,"stem":7,"children":8,"page":102},"Dersler","/dersler","dersler",[9,103,116,137,146,155,164],{"title":10,"path":11,"stem":12,"children":13,"page":102},"Asp.Net Mvc","/dersler/asp-net-mvc","dersler/asp-net-mvc",[14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98],{"title":15,"path":16,"stem":17},"Asp.Net Mvc – Ajax ile Üye Girişi – Üyelik Sistemi 2 (Asp.Net Mvc Yazı Dizisi – 21)","/dersler/asp-net-mvc/asp-net-mvc-ajax-ile-uye-girisi-uyelik-sistemi-2-asp-net-mvc-yazi-dizisi-21","dersler/asp-net-mvc/asp-net-mvc-ajax-ile-uye-girisi-uyelik-sistemi-2-asp-net-mvc-yazi-dizisi-21",{"title":19,"path":20,"stem":21},"Asp.Net Mvc - Code First ile Veritabanı İşlemleri 2 (Asp.Net Mvc Yazı Dizisi – 12)","/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-2-asp-net-mvc-yazi-dizisi-12","dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-2-asp-net-mvc-yazi-dizisi-12",{"title":23,"path":24,"stem":25},"Asp.Net Mvc - Code First ile Veritabanı İşlemleri 1 - Proje Başlangıcı (Asp.Net Mvc Yazı Dizisi – 11)","/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11","dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11",{"title":27,"path":28,"stem":29},"Asp.Net Mvc - Controller ve View İşlemleri 1 (Asp.Net Mvc Yazı Dizisi – 13)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-1-asp-net-mvc-yazi-dizisi-13","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-1-asp-net-mvc-yazi-dizisi-13",{"title":31,"path":32,"stem":33},"Asp.Net Mvc - Controller ve View İşlemleri 2 (Asp.Net Mvc Yazı Dizisi – 14)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-2-asp-net-mvc-yazi-dizisi-14","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-2-asp-net-mvc-yazi-dizisi-14",{"title":35,"path":36,"stem":37},"Asp.Net Mvc – Controller ve View İşlemleri 3 (Asp.Net Mvc Yazı Dizisi – 15)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-3-asp-net-mvc-yazi-dizisi-15","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-3-asp-net-mvc-yazi-dizisi-15",{"title":39,"path":40,"stem":41},"Asp.Net Mvc – Html Helper'ler (Asp.Net Mvc Yazı Dizisi – 16)","/dersler/asp-net-mvc/asp-net-mvc-html-helperler-asp-net-mvc-yazi-dizisi-16","dersler/asp-net-mvc/asp-net-mvc-html-helperler-asp-net-mvc-yazi-dizisi-16",{"title":43,"path":44,"stem":45},"Asp.Net Mvc – Html Helper'lerin For Takılı Kullanım Örnekleri 1 (Asp.Net Mvc Yazı Dizisi – 18)","/dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-1-asp-net-mvc-yazi-dizisi-18","dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-1-asp-net-mvc-yazi-dizisi-18",{"title":47,"path":48,"stem":49},"Asp.Net Mvc – Html Helper'lerin For Takılı Kullanım Örnekleri 2 (Asp.Net Mvc Yazı Dizisi – 19)","/dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-2-asp-net-mvc-yazi-dizisi-19","dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-2-asp-net-mvc-yazi-dizisi-19",{"title":51,"path":52,"stem":53},"Asp.Net Mvc Layout Sayfaları (Asp.Net Mvc Yazı Dizisi – 4)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-asp-net-mvc-yazi-dizisi-4","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-asp-net-mvc-yazi-dizisi-4",{"title":55,"path":56,"stem":57},"Asp.Net Mvc Layout Sayfaları - Partial View (Asp.Net Mvc Yazı Dizisi – 7)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-partial-view-asp-net-mvc-yazi-dizisi-7","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-partial-view-asp-net-mvc-yazi-dizisi-7",{"title":59,"path":60,"stem":61},"Asp.Net Mvc Layout Sayfaları - Render Page (Asp.Net Mvc Yazı Dizisi – 6)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-page-asp-net-mvc-yazi-dizisi-6","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-page-asp-net-mvc-yazi-dizisi-6",{"title":63,"path":64,"stem":65},"Asp.Net Mvc Layout Sayfaları - Render Section (Asp.Net Mvc Yazı Dizisi – 5)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-section-asp-net-mvc-yazi-dizisi-5","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-section-asp-net-mvc-yazi-dizisi-5",{"title":67,"path":68,"stem":69},"Asp.Net Mvc Nedir? (Asp.Net Mvc Yazı Dizisi - 1)","/dersler/asp-net-mvc/asp-net-mvc-nedir-asp-net-mvc-yazi-dizisi-1","dersler/asp-net-mvc/asp-net-mvc-nedir-asp-net-mvc-yazi-dizisi-1",{"title":71,"path":72,"stem":73},"Asp.Net Mvc Razor View Engine Bölüm 1 (Asp.Net Mvc Yazı Dizisi – 8)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-1-asp-net-mvc-yazi-dizisi-8","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-1-asp-net-mvc-yazi-dizisi-8",{"title":75,"path":76,"stem":77},"Asp.Net Mvc Razor View Engine Bölüm 2 (Asp.Net Mvc Yazı Dizisi – 9)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-2-asp-net-mvc-yazi-dizisi-9","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-2-asp-net-mvc-yazi-dizisi-9",{"title":79,"path":80,"stem":81},"Asp.Net Mvc Razor View Engine Bölüm 3 (Asp.Net Mvc Yazı Dizisi – 10)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-3-asp-net-mvc-yazi-dizisi-10","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-3-asp-net-mvc-yazi-dizisi-10",{"title":83,"path":84,"stem":85},"Asp.Net Mvc Routing Mekanizması ve Mvc 5 ile Gelen Yenilikler","/dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler","dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler",{"title":87,"path":88,"stem":89},"Asp.Net Mvc – Web Helper'ler (Asp.Net Mvc Yazı Dizisi – 17)","/dersler/asp-net-mvc/asp-net-mvc-web-helperler-asp-net-mvc-yazi-dizisi-17","dersler/asp-net-mvc/asp-net-mvc-web-helperler-asp-net-mvc-yazi-dizisi-17",{"title":91,"path":92,"stem":93},"Asp.Net Mvc – Yeni Üye Kaydı ve Dosya Yükleme - Üyelik Sistemi 1 (Asp.Net Mvc Yazı Dizisi – 20)","/dersler/asp-net-mvc/asp-net-mvc-yeni-uye-kaydi-ve-dosya-yukleme-uyelik-sistemi-1-asp-net-mvc-yazi-dizisi-20","dersler/asp-net-mvc/asp-net-mvc-yeni-uye-kaydi-ve-dosya-yukleme-uyelik-sistemi-1-asp-net-mvc-yazi-dizisi-20",{"title":95,"path":96,"stem":97},"Asp.Net Mvc'nin Avantajları (Asp.Net Mvc Yazı Dizisi – 2)","/dersler/asp-net-mvc/asp-net-mvcnin-avantajlari-asp-net-mvc-yazi-dizisi-2","dersler/asp-net-mvc/asp-net-mvcnin-avantajlari-asp-net-mvc-yazi-dizisi-2",{"title":99,"path":100,"stem":101},"İlk Asp.Net Mvc Projesinin Oluşturulması (Asp.Net Mvc Yazı Dizisi – 3)","/dersler/asp-net-mvc/ilk-asp-net-mvc-projesinin-olusturulmasi-asp-net-mvc-yazi-dizisi-3","dersler/asp-net-mvc/ilk-asp-net-mvc-projesinin-olusturulmasi-asp-net-mvc-yazi-dizisi-3",false,{"title":104,"path":105,"stem":106,"children":107,"page":102},"Javascript","/dersler/javascript","dersler/javascript",[108,112],{"title":109,"path":110,"stem":111},"Jquery'den Yalın Javascript (Vanilla Js)'e Geçiş","/dersler/javascript/jqueryden-yalin-javascript-vanilla-jse-gecis","dersler/javascript/jqueryden-yalin-javascript-vanilla-jse-gecis",{"title":113,"path":114,"stem":115},"Object Oriented (Nesne Yönelimli) Javascript Programlama","/dersler/javascript/object-oriented-nesne-yonelimli-javascript-programlama","dersler/javascript/object-oriented-nesne-yonelimli-javascript-programlama",{"title":117,"path":118,"stem":119,"children":120,"page":102},"Orchard Cms","/dersler/orchard-cms","dersler/orchard-cms",[121,125,129,133],{"title":122,"path":123,"stem":124},"Orchard Project Nedir? (Orchard Cms Seri - 1)","/dersler/orchard-cms/orchard-project-nedir-orchard-cms-seri-1","dersler/orchard-cms/orchard-project-nedir-orchard-cms-seri-1",{"title":126,"path":127,"stem":128},"Orchard – Visual Studio ile Kurulumu? (Orchard Cms Seri – 3)","/dersler/orchard-cms/orchard-visual-studio-ile-kurulumu-orchard-cms-seri-3","dersler/orchard-cms/orchard-visual-studio-ile-kurulumu-orchard-cms-seri-3",{"title":130,"path":131,"stem":132},"Orchard - Web Matrix ile Kurulumu? (Orchard Cms Seri – 2)","/dersler/orchard-cms/orchard-web-matrix-kurulumu-orchard-cms-seri-2","dersler/orchard-cms/orchard-web-matrix-kurulumu-orchard-cms-seri-2",{"title":134,"path":135,"stem":136},"Orchard'ı Türkçeleştirme (Türkçe Dil Dosyaları Mevcut)","/dersler/orchard-cms/orchardi-turkcelestirme-turkce-dil-dosyalari","dersler/orchard-cms/orchardi-turkcelestirme-turkce-dil-dosyalari",{"title":138,"path":139,"stem":140,"children":141,"page":102},"RequireJs","/dersler/requirejs","dersler/requirejs",[142],{"title":143,"path":144,"stem":145},"RequireJs Nedir? (RequireJs ile Modüler JavaScript Programlama)","/dersler/requirejs/requirejs-nedir-requirejs-ile-moduler-javascript-programlama-1","dersler/requirejs/requirejs-nedir-requirejs-ile-moduler-javascript-programlama-1",{"title":147,"path":148,"stem":149,"children":150,"page":102},"Three.js ile WebGL","/dersler/three-js-ile-webgl","dersler/three-js-ile-webgl",[151],{"title":152,"path":153,"stem":154},"WebGL Nedir? (Three.js ile WebGL)","/dersler/three-js-ile-webgl/webgl-nedir-three-js-ile-webgl-1","dersler/three-js-ile-webgl/webgl-nedir-three-js-ile-webgl-1",{"title":156,"path":157,"stem":158,"children":159,"page":102},"Vue.js","/dersler/vue-js","dersler/vue-js",[160],{"title":161,"path":162,"stem":163},"Vue.js Nedir?","/dersler/vue-js/vue-js-nedir","dersler/vue-js/vue-js-nedir",{"title":165,"path":166,"stem":167,"children":168,"page":102},"Yazılım Mimarisi","/dersler/yazilim-mimarisi","dersler/yazilim-mimarisi",[169],{"title":170,"path":171,"stem":172},"Kurumsal Web Uygulamaları Geliştirme","/dersler/yazilim-mimarisi/kurumsal-web-uygulamalari-gelistirme","dersler/yazilim-mimarisi/kurumsal-web-uygulamalari-gelistirme",{"title":174,"path":175,"stem":176,"children":177,"page":102},"Duyurular","/duyurular","duyurular",[178,182,186,190,194,198,202,206],{"title":179,"path":180,"stem":181},"Asp.Net vNext ve Visual Studio 14","/duyurular/asp-net-vnext-ve-visual-studio-14","duyurular/asp-net-vnext-ve-visual-studio-14",{"title":183,"path":184,"stem":185},"Nop Commerce 3.20 Sürümü Çıktı","/duyurular/nop-commerce-3-20-surumu-cikti","duyurular/nop-commerce-3-20-surumu-cikti",{"title":187,"path":188,"stem":189},"Nop Commerce 3.30 Yenilikleri","/duyurular/nop-commerce-3-30-yenilikleri","duyurular/nop-commerce-3-30-yenilikleri",{"title":191,"path":192,"stem":193},"TypeScript Final Sürümüne Ulaştı","/duyurular/typescript-final-surumune-ulasti","duyurular/typescript-final-surumune-ulasti",{"title":195,"path":196,"stem":197},"Visual Studio 2013 Update 1 Final Çıktı","/duyurular/visual-studio-2013-update-1-final-cikti","duyurular/visual-studio-2013-update-1-final-cikti",{"title":199,"path":200,"stem":201},"Visual Studio 2013 Update 2 Final Çıktı","/duyurular/visual-studio-2013-update-2-final-cikti","duyurular/visual-studio-2013-update-2-final-cikti",{"title":203,"path":204,"stem":205},"Visual Studio 2013 Update 3 Final Çıktı","/duyurular/visual-studio-2013-update-3-final-cikti","duyurular/visual-studio-2013-update-3-final-cikti",{"title":207,"path":208,"stem":209},"Wordpress 3.8.1 Sürümü Çıktı","/duyurular/wordpress-3-8-1-surumu-cikti","duyurular/wordpress-3-8-1-surumu-cikti",{"title":211,"path":212,"stem":213,"children":214,"page":102},"Geliştirmelerim","/gelistirmelerim","gelistirmelerim",[215,219,223,227,231],{"title":216,"path":217,"stem":218},"ChatGPT Arayüz Projesi","/gelistirmelerim/chatgpt-arayuz","gelistirmelerim/chatgpt-arayuz",{"title":220,"path":221,"stem":222},"Orchard Bootstrap Eklentisi","/gelistirmelerim/orchard-bootstrap-eklentisi","gelistirmelerim/orchard-bootstrap-eklentisi",{"title":224,"path":225,"stem":226},"Orchard Localized Layer Eklentisi","/gelistirmelerim/orchard-localized-layer-eklentisi","gelistirmelerim/orchard-localized-layer-eklentisi",{"title":228,"path":229,"stem":230},"Orchard Responsive Flex Slider Eklentisi","/gelistirmelerim/orchard-responsive-flex-slider-eklentisi","gelistirmelerim/orchard-responsive-flex-slider-eklentisi",{"title":232,"path":233,"stem":234},"Vue.js Token Eklentisi","/gelistirmelerim/vue-js-token-eklentisi","gelistirmelerim/vue-js-token-eklentisi",{"title":236,"path":237,"stem":238,"children":239,"page":102},"İpuçları","/ipuclari","ipuclari",[240,249,258,266,275,284,292,309,317,330],{"title":241,"path":242,"stem":243,"children":244,"page":102},"Apache Cordova","/ipuclari/apache-cordova","ipuclari/apache-cordova",[245],{"title":246,"path":247,"stem":248},"Visual Studio'da Cordova Intellisense Aktif Etme","/ipuclari/apache-cordova/visual-studioda-cordova-intellisense-aktif-etme","ipuclari/apache-cordova/visual-studioda-cordova-intellisense-aktif-etme",{"title":250,"path":251,"stem":252,"children":253,"page":102},"Apache Server","/ipuclari/apache-server","ipuclari/apache-server",[254],{"title":255,"path":256,"stem":257},"Apache Sunucularda Açılış Sayfasını Değiştirmek","/ipuclari/apache-server/apache-sunucularda-acilis-sayfasini-degistirmek","ipuclari/apache-server/apache-sunucularda-acilis-sayfasini-degistirmek",{"title":10,"path":259,"stem":260,"children":261,"page":102},"/ipuclari/asp-net-mvc","ipuclari/asp-net-mvc",[262],{"title":263,"path":264,"stem":265},"Class Library Projelerine Razor Intellisense Desteği Eklemek","/ipuclari/asp-net-mvc/class-library-projelerine-razor-intellisense-destegi-eklemek","ipuclari/asp-net-mvc/class-library-projelerine-razor-intellisense-destegi-eklemek",{"title":267,"path":268,"stem":269,"children":270,"page":102},"Asp.Net Web Api","/ipuclari/asp-net-web-api","ipuclari/asp-net-web-api",[271],{"title":272,"path":273,"stem":274},"Asp.Net Web Api Dosya İndirme","/ipuclari/asp-net-web-api/asp-net-web-api-dosya-indirme","ipuclari/asp-net-web-api/asp-net-web-api-dosya-indirme",{"title":276,"path":277,"stem":278,"children":279,"page":102},"IIS","/ipuclari/iis","ipuclari/iis",[280],{"title":281,"path":282,"stem":283},"Visual Studio IIS Express Yüksek Cpu Kullanımı Sorunu","/ipuclari/iis/visual-studio-iis-express-yuksek-cpu-kullanimi-sorunu","ipuclari/iis/visual-studio-iis-express-yuksek-cpu-kullanimi-sorunu",{"title":104,"path":285,"stem":286,"children":287,"page":102},"/ipuclari/javascript","ipuclari/javascript",[288],{"title":289,"path":290,"stem":291},"Jquery width() - innerWidth() - outerWidth() Farkları","/ipuclari/javascript/jquery-width-innerwidth-outerwidth-farklari","ipuclari/javascript/jquery-width-innerwidth-outerwidth-farklari",{"title":293,"path":294,"stem":295,"children":296,"page":102},"Nop Commerce","/ipuclari/nop-commerce","ipuclari/nop-commerce",[297,301,305],{"title":298,"path":299,"stem":300},"Nop Commerce Eklentilerinde Kullanıcı Yetkilendirmesi","/ipuclari/nop-commerce/nop-commerce-eklenti-kullanici-yetkilendirmesi","ipuclari/nop-commerce/nop-commerce-eklenti-kullanici-yetkilendirmesi",{"title":302,"path":303,"stem":304},"Nop Commerce Eklenti Yazımında Intelli Sense Sorununu Düzeltme","/ipuclari/nop-commerce/nop-commerce-eklenti-yaziminda-intelli-sense-sorununu-duzeltme","ipuclari/nop-commerce/nop-commerce-eklenti-yaziminda-intelli-sense-sorununu-duzeltme",{"title":306,"path":307,"stem":308},"Nop Commerce Widget Konum Listesi","/ipuclari/nop-commerce/nop-commerce-widget-konum-listesi","ipuclari/nop-commerce/nop-commerce-widget-konum-listesi",{"title":117,"path":310,"stem":311,"children":312,"page":102},"/ipuclari/orchard-cms","ipuclari/orchard-cms",[313],{"title":314,"path":315,"stem":316},"Orchard 1.7.x Sürümlerinde Intellisense Hatasını Giderme","/ipuclari/orchard-cms/orchard-1-7-x-surumlerinde-intellisense-hatasini-giderme","ipuclari/orchard-cms/orchard-1-7-x-surumlerinde-intellisense-hatasini-giderme",{"title":318,"path":319,"stem":320,"children":321,"page":102},"Wordpress","/ipuclari/wordpress","ipuclari/wordpress",[322,326],{"title":323,"path":324,"stem":325},"Word Press Ftp Bilgisi Sormama Ayarı","/ipuclari/wordpress/word-press-ftp-bilgisi-sormama-ayari","ipuclari/wordpress/word-press-ftp-bilgisi-sormama-ayari",{"title":327,"path":328,"stem":329},"Wordpress Sidebar Meta - Wordpress.org Linkini Silme","/ipuclari/wordpress/wordpress-sidebar-meta-wordpress-org-linkini-silme","ipuclari/wordpress/wordpress-sidebar-meta-wordpress-org-linkini-silme",{"title":331,"path":332,"stem":333,"children":334,"page":102},"Xampp","/ipuclari/xampp","ipuclari/xampp",[335],{"title":336,"path":337,"stem":338},"Xampp Tüm Sürüm Listesi","/ipuclari/xampp/xampp-tum-surum-listesi","ipuclari/xampp/xampp-tum-surum-listesi",[340,357,368,379,390,401,412,423,434,445,456,467,478,489,500,511,522,533,544,555,566],{"id":341,"title":5,"body":342,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":351,"navigation":352,"path":353,"seo":354,"stem":355,"__hash__":356},"posts/dersler/.navigation.md",{"type":343,"value":344,"toc":345},"minimark",[],{"title":346,"searchDepth":347,"depth":347,"links":348},"",2,[],null,"md",{},true,"/dersler/.navigation",{"title":5,"description":346},"dersler/.navigation","Yo_9ZJtmvgLHf17cAHzvT06H3T1Ets_s-roHMTl3ZYI",{"id":358,"title":10,"body":359,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":363,"navigation":352,"path":364,"seo":365,"stem":366,"__hash__":367},"posts/dersler/asp-net-mvc/.navigation.md",{"type":343,"value":360,"toc":361},[],{"title":346,"searchDepth":347,"depth":347,"links":362},[],{},"/dersler/asp-net-mvc/.navigation",{"title":10,"description":346},"dersler/asp-net-mvc/.navigation","PTvSN66cD4508L31HdyDUIhOskLEnya90TKHQjGo994",{"id":369,"title":104,"body":370,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":374,"navigation":352,"path":375,"seo":376,"stem":377,"__hash__":378},"posts/dersler/javascript/.navigation.md",{"type":343,"value":371,"toc":372},[],{"title":346,"searchDepth":347,"depth":347,"links":373},[],{},"/dersler/javascript/.navigation",{"title":104,"description":346},"dersler/javascript/.navigation","bUttamdS6EWYvmoedNpErrdL_02OT9K6sHHmAD5kdXE",{"id":380,"title":117,"body":381,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":385,"navigation":352,"path":386,"seo":387,"stem":388,"__hash__":389},"posts/dersler/orchard-cms/.navigation.md",{"type":343,"value":382,"toc":383},[],{"title":346,"searchDepth":347,"depth":347,"links":384},[],{},"/dersler/orchard-cms/.navigation",{"title":117,"description":346},"dersler/orchard-cms/.navigation","vf9ZQxf2YUpNSH09JkDW8B80DJ8dutrwo13pM-L1naU",{"id":391,"title":138,"body":392,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":396,"navigation":352,"path":397,"seo":398,"stem":399,"__hash__":400},"posts/dersler/requirejs/.navigation.md",{"type":343,"value":393,"toc":394},[],{"title":346,"searchDepth":347,"depth":347,"links":395},[],{},"/dersler/requirejs/.navigation",{"title":138,"description":346},"dersler/requirejs/.navigation","3ee9nRLCD2baXpsVn9PyDaAus4--JiF-l-veIDcdruM",{"id":402,"title":147,"body":403,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":407,"navigation":352,"path":408,"seo":409,"stem":410,"__hash__":411},"posts/dersler/three-js-ile-webgl/.navigation.md",{"type":343,"value":404,"toc":405},[],{"title":346,"searchDepth":347,"depth":347,"links":406},[],{},"/dersler/three-js-ile-webgl/.navigation",{"title":147,"description":346},"dersler/three-js-ile-webgl/.navigation","nUfb_DUlupidc2LBy3L_59z47x2BhJi1-L6Ri78gMMI",{"id":413,"title":156,"body":414,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":418,"navigation":352,"path":419,"seo":420,"stem":421,"__hash__":422},"posts/dersler/vue-js/.navigation.md",{"type":343,"value":415,"toc":416},[],{"title":346,"searchDepth":347,"depth":347,"links":417},[],{},"/dersler/vue-js/.navigation",{"title":156,"description":346},"dersler/vue-js/.navigation","sM919oShzUaKXtAu2t6UxThzxjp88FIpEiCBtqjgMfM",{"id":424,"title":165,"body":425,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":429,"navigation":352,"path":430,"seo":431,"stem":432,"__hash__":433},"posts/dersler/yazilim-mimarisi/.navigation.md",{"type":343,"value":426,"toc":427},[],{"title":346,"searchDepth":347,"depth":347,"links":428},[],{},"/dersler/yazilim-mimarisi/.navigation",{"title":165,"description":346},"dersler/yazilim-mimarisi/.navigation","VaeC5tLP3Enl4njeu0Cen-C_KmQabvKhw7PxK_bMbAw",{"id":435,"title":174,"body":436,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":440,"navigation":352,"path":441,"seo":442,"stem":443,"__hash__":444},"posts/duyurular/.navigation.md",{"type":343,"value":437,"toc":438},[],{"title":346,"searchDepth":347,"depth":347,"links":439},[],{},"/duyurular/.navigation",{"title":174,"description":346},"duyurular/.navigation","4rzF9u-0UF1wDFh1PaKOGlrl47vkJ-eGm2YLWTQsWB8",{"id":446,"title":211,"body":447,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":451,"navigation":352,"path":452,"seo":453,"stem":454,"__hash__":455},"posts/gelistirmelerim/.navigation.md",{"type":343,"value":448,"toc":449},[],{"title":346,"searchDepth":347,"depth":347,"links":450},[],{},"/gelistirmelerim/.navigation",{"title":211,"description":346},"gelistirmelerim/.navigation","-rbnagzfm7EAv-3Wbx2RtTpnuOsf7PhFd1k8HWymFJs",{"id":457,"title":236,"body":458,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":462,"navigation":352,"path":463,"seo":464,"stem":465,"__hash__":466},"posts/ipuclari/.navigation.md",{"type":343,"value":459,"toc":460},[],{"title":346,"searchDepth":347,"depth":347,"links":461},[],{},"/ipuclari/.navigation",{"title":236,"description":346},"ipuclari/.navigation","zi0IIAkH6byWTX1v0PQqvoJGIN-QOgZPuFh46B3-Hbs",{"id":468,"title":241,"body":469,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":473,"navigation":352,"path":474,"seo":475,"stem":476,"__hash__":477},"posts/ipuclari/apache-cordova/.navigation.md",{"type":343,"value":470,"toc":471},[],{"title":346,"searchDepth":347,"depth":347,"links":472},[],{},"/ipuclari/apache-cordova/.navigation",{"title":241,"description":346},"ipuclari/apache-cordova/.navigation","XB8Y86jOhcbmfazjiAHT9ZBlLm-ELG_56cMZdlgVDeg",{"id":479,"title":250,"body":480,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":484,"navigation":352,"path":485,"seo":486,"stem":487,"__hash__":488},"posts/ipuclari/apache-server/.navigation.md",{"type":343,"value":481,"toc":482},[],{"title":346,"searchDepth":347,"depth":347,"links":483},[],{},"/ipuclari/apache-server/.navigation",{"title":250,"description":346},"ipuclari/apache-server/.navigation","nz2-tvhAoLZq5JoofxrB1Vce1Y0ZJxM5-aJy4UGGMBE",{"id":490,"title":10,"body":491,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":495,"navigation":352,"path":496,"seo":497,"stem":498,"__hash__":499},"posts/ipuclari/asp-net-mvc/.navigation.md",{"type":343,"value":492,"toc":493},[],{"title":346,"searchDepth":347,"depth":347,"links":494},[],{},"/ipuclari/asp-net-mvc/.navigation",{"title":10,"description":346},"ipuclari/asp-net-mvc/.navigation","yIDoFpgOrvcNkVOqKxihtoYUeqvtYWjqHMCSbvyyBM8",{"id":501,"title":267,"body":502,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":506,"navigation":352,"path":507,"seo":508,"stem":509,"__hash__":510},"posts/ipuclari/asp-net-web-api/.navigation.md",{"type":343,"value":503,"toc":504},[],{"title":346,"searchDepth":347,"depth":347,"links":505},[],{},"/ipuclari/asp-net-web-api/.navigation",{"title":267,"description":346},"ipuclari/asp-net-web-api/.navigation","lAXXpFakou4QFVT0fsneP_g0umpUlY7pPiW3AUj0iIg",{"id":512,"title":276,"body":513,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":517,"navigation":352,"path":518,"seo":519,"stem":520,"__hash__":521},"posts/ipuclari/iis/.navigation.md",{"type":343,"value":514,"toc":515},[],{"title":346,"searchDepth":347,"depth":347,"links":516},[],{},"/ipuclari/iis/.navigation",{"title":276,"description":346},"ipuclari/iis/.navigation","zl9qxvnrSEksXoGXqf4t3nm5q4tAsAUoQZN7O2Pj6l8",{"id":523,"title":104,"body":524,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":528,"navigation":352,"path":529,"seo":530,"stem":531,"__hash__":532},"posts/ipuclari/javascript/.navigation.md",{"type":343,"value":525,"toc":526},[],{"title":346,"searchDepth":347,"depth":347,"links":527},[],{},"/ipuclari/javascript/.navigation",{"title":104,"description":346},"ipuclari/javascript/.navigation","l3NHgRo-FsSkV-HcqIpwTPoxjwyiA_Er6lWUBa_iyKU",{"id":534,"title":293,"body":535,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":539,"navigation":352,"path":540,"seo":541,"stem":542,"__hash__":543},"posts/ipuclari/nop-commerce/.navigation.md",{"type":343,"value":536,"toc":537},[],{"title":346,"searchDepth":347,"depth":347,"links":538},[],{},"/ipuclari/nop-commerce/.navigation",{"title":293,"description":346},"ipuclari/nop-commerce/.navigation","J3gbuZvYk7B3_EWUoYX4qmWCvGsfciErCs_DkpZS3o4",{"id":545,"title":117,"body":546,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":550,"navigation":352,"path":551,"seo":552,"stem":553,"__hash__":554},"posts/ipuclari/orchard-cms/.navigation.md",{"type":343,"value":547,"toc":548},[],{"title":346,"searchDepth":347,"depth":347,"links":549},[],{},"/ipuclari/orchard-cms/.navigation",{"title":117,"description":346},"ipuclari/orchard-cms/.navigation","emBSh7WkN8FUKMOnKi3efkXnJMctE9nz-z5apX2Nk28",{"id":556,"title":318,"body":557,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":561,"navigation":352,"path":562,"seo":563,"stem":564,"__hash__":565},"posts/ipuclari/wordpress/.navigation.md",{"type":343,"value":558,"toc":559},[],{"title":346,"searchDepth":347,"depth":347,"links":560},[],{},"/ipuclari/wordpress/.navigation",{"title":318,"description":346},"ipuclari/wordpress/.navigation","se7piGHmA3YAlKnPNPqIRhyiTc-1cdlxvCE_WChWiNs",{"id":567,"title":331,"body":568,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":572,"navigation":352,"path":573,"seo":574,"stem":575,"__hash__":576},"posts/ipuclari/xampp/.navigation.md",{"type":343,"value":569,"toc":570},[],{"title":346,"searchDepth":347,"depth":347,"links":571},[],{},"/ipuclari/xampp/.navigation",{"title":331,"description":346},"ipuclari/xampp/.navigation","-Eggmae4KDrGpf_pbmsKkFN0yO5CtVI5ak5TYdCiNwI",{"id":578,"title":83,"body":579,"coverImage":1980,"createDate":1981,"description":591,"extension":350,"meta":1982,"navigation":352,"path":84,"seo":1983,"stem":85,"__hash__":1984},"posts/dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler.md",{"type":343,"value":580,"toc":1978},[581,585,592,595,598,601,608,611,653,658,667,682,688,708,714,721,730,736,757,764,771,777,789,794,816,822,838,844,849,857,863,868,874,879,1252,1261,1267,1275,1281,1290,1296,1303,1308,1313,1316,1324,1330,1336,1339,1348,1354,1363,1369,1381,1387,1390,1400,1403,1414,1420,1429,1435,1444,1450,1453,1458,1473,1481,1487,1492,1498,1509,1515,1528,1534,1539,1546,1549,1562,1568,1575,1581,1589,1595,1601,1606,1616,1619,1626,1632,1641,1647,1652,1691,1702,1708,1718,1724,1729,1736,1753,1759,1766,1772,1775,1781,1787,1792,1817,1822,1828,1831,1838,1844,1847,1858,1864,1873,1933,1938,1944,1953,1959,1962,1971,1974],[582,583,83],"h1",{"id":584},"aspnet-mvc-routing-mekanizması-ve-mvc-5-ile-gelen-yenilikler",[586,587,588],"p",{},[589,590,591],"strong",{},"Merhaba Arkadaşlar,",[586,593,594],{},"Yukarıdaki resimde, bir ışıklı kavşak görmekteyiz. Işıklar sayesinde araçlar ve yayalar, gidecekleri yere güven\niçerisinde ulaşabilmektedirler.",[586,596,597],{},"Asp.Net Mvc'de Routing yapısını da, aslında bu şekilde değerlendirme imkanına sahibiz. Sitemize giren bir ziyaretçi,\ntalep ettiği sayfaya, bizim kurduğumuz Routing mekanizması ile ulaşabilmektedir.",[586,599,600],{},"Asp.Net Web Forms'da bu yapı çok daha zordur. Talep edilen her sayfa, sunucuda fiziksel olarak bulunan bir sayfadır. Biz\ndirekt olarak sayfayı adıyla çağırırız. Bu noktada Seo açısından uyumlu linkler oluşturmamızda oldukça zor olmaktadır.\nUrl Rewrite teknikleri ile bu sorunlar aşılmaya çalışılmaktadır.",[586,602,603,604,607],{},"Asp.Net Mvc, piyasaya sürüldüğünde, Routing mekanizması çok beğenilmiştir. Asp.Net Mvc'de fiziksel olarak sunucuda\nbarınan sayfalar yoktur. Ziyaretçi bir talepte bulunduğunda, Controller içerisindeki Action'u çağırır. Action istediği\nsonucu, istediği View parçasını geriye döndürebilir. Bu da bize ekstra güvenlik ve esneklik sağlamaktadır. Biz bunun\nyanında istersek, bir url'nin istediğimiz bir Action'u çalıştırmasını sağlayabiliriz. Örneğin; ",[589,605,606],{},"haberler/spor","\nşeklinde bir linke talepte bulunulduğunda, NewsController içerisinde bulunan, Sport Action'unu çağırabiliriz. Bu kısımda\ntamamen özgürüz.",[586,609,610],{},"Küçük bir örnek üzerinden gidelim(Önceki derslerimde, yeni proje oluşturma vs. işlemleri çok detaylı, resimli olarak\nanlatmıştım. İncelemenizde fayda var).;",[612,613,614,622,637],"ul",{},[615,616,617,618,621],"li",{},"Visual Studio ortamında, yeni bir proje oluşturalım, adına ",[589,619,620],{},"RoutingDeneme"," diyelim (Mvc 5 Routing yeniliklerini de\ngörebilmek için, Framework'u .Net Framework 4.5.1 olarak seçmemiz daha iyi olur).",[615,623,624,625,628,629,632,633,636],{},"Şablon seçiminde ",[589,626,627],{},"Mvc","'yi seçip, ",[589,630,631],{},"Ok"," tıklayalım. ",[589,634,635],{},"Windows Azure"," ile ilgili bir seçenek aktif ise, pasif\nedelim.",[615,638,639,640,643,644,648,649,652],{},"Projemiz açıldığında, ",[589,641,642],{},"App_Start>RouteConfig.cs"," dosyasını açalım. ",[645,646,647],"code",{},"RouteConfig"," class'ımızın içerisinde\n",[645,650,651],{},"RegisterRoutes"," metodu mevcut.",[586,654,655],{},[589,656,657],{},"RouteConfig Class'ı",[659,660,665],"pre",{"className":661,"code":663,"language":664},[662],"language-text","public class RouteConfig\n{\n    public static void RegisterRoutes(RouteCollection routes)\n    {\n        routes.IgnoreRoute(\"{resource}.axd/{*pathInfo}\");\n\n        routes.MapRoute(\n            name: \"Default\", //Yönlendirmenin adı\n            url: \"{controller}/{action}/{id}\", //Talep olarak gelecek url yapısı\n            defaults: new { controller = \"Home\", action = \"Index\", id = UrlParameter.Optional }  //Gelen talebin\n            //yönlendirileceği, Controller ve Action, varsa parametreler\n        );\n        }\n    }\n","text",[645,666,663],{"__ignoreMap":346},[612,668,669,672],{},[615,670,671],{},"Yukarıda da görüldüğü üzere, sistem tarafından eklenmiş otomatik olarak gelen url talebindeki, Controller'i ve Action'\nu çağıran, varsa parametreyi de gönderen bir Route'miz mevcut. Bu yapı, bizim ihtiyaçlarımızı her zaman\nkarşılamayacaktır. Bunun için kendi Route'lerimizi de yazacağız.",[615,673,674,677,678,681],{},[589,675,676],{},"Models"," klasörümüze, ",[589,679,680],{},"News"," adında bir class ekleyelim. içeriğini aşağıdaki gibi dolduralım.",[659,683,686],{"className":684,"code":685,"language":664},[662],"using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\n\nnamespace RoutingDeneme.Models\n{\npublic class News\n{\npublic int Id { get; set; }\n\n        //Haberin başlığı\n        public string Title { get; set; }\n\n        //Haberin içeriği\n        public string Content { get; set; }\n\n        //Haberin eklenme tarihi\n        public DateTime CreatedDate { get; set; }\n    }\n}\n",[645,687,685],{"__ignoreMap":346},[612,689,690,701],{},[615,691,692,693,696,697,700],{},"Haberlerimizi temsil edecek class'ımızı oluşturduktan sonra, şimdi Controller'imize yeni bir ",[589,694,695],{},"NewsController"," adında\nController ekleyelim. Şablon olarak ",[589,698,699],{},"Controller - Empty","'i seçelim.",[615,702,703,704,707],{},"Veritabanı yerine, veri kaynağı olarak kullanmak amacıyla, haberlerin olduğu bir liste oluşturacağız. Bunun için, *\n",[705,706,695],"em",{},"*'in içeriğini aşağıdaki gibi hazırlayalım.",[659,709,712],{"className":710,"code":711,"language":664},[662],"using RoutingDeneme.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing System.Web.Mvc;\n\nnamespace RoutingDeneme.Controllers\n{\npublic class NewsController : Controller\n{\nList\u003CNews> news;\n\n        public NewsController()\n        {\n            news = new List\u003CNews>();\n            news.Add(new News() { Content = \"Yapılan seçimlerin sonuçları açıklandı.\", CreatedDate = DateTime.Now, Title = \"SecimSonuclari\", Id = 1 });\n            news.Add(new News() { Content = \"Hükümetin yaptığı yeni düzenleme, cezalarda artış öngörüyor.\", CreatedDate = DateTime.Now, Title = \"YeniKanunDuzenlemesi\", Id = 2 });\n            news.Add(new News() { Content = \"Milli takımımızın aldığı bu galibiyette en büyük pay kalecimizin oldu.\", CreatedDate = DateTime.Now, Title = \"MilliTakimGalip\", Id = 3 });\n        }\n    }\n}\n",[645,713,711],{"__ignoreMap":346},[586,715,716,717,720],{},"Yukarıdaki kod bloğunda, öncelikle tüm metodlardan erişebilmek için ",[645,718,719],{},"List\u003CNews> news"," elemanını global olarak\ntanımladık. Ardından da, Controller'in initalizer (oluşturucu) metodunda, listemize 3 tane haber ekledik. Böylelikle\nelimizde bir veri kaynağı olmuş oldu.",[612,722,723],{},[615,724,725,726,729],{},"Şimdi Action'larımızı oluşturmaya başlayalım. Öncelikle listemizdeki tüm haberlerimizin geldiği, ",[589,727,728],{},"GetNews","\nAction'umuzu aşağıdaki gibi ekleyelim.",[659,731,734],{"className":732,"code":733,"language":664},[662],"//Tüm haberleri liste halinde getirir.\npublic ActionResult GetNews()\n{\n    return View(news);\n}\n",[645,735,733],{"__ignoreMap":346},[612,737,738],{},[615,739,740,741,744,745,748,749,752,753,756],{},"Ardından da, ",[589,742,743],{},"Views>News"," içerisine ",[589,746,747],{},"GetNews.cshtml"," adlı View dosyamızı ekleyelim. ",[645,750,751],{},"ActionResult GetNews()","\nüzerine sağ tıklayarak ",[589,754,755],{},"Add View"," diyelim ve ayarlarını aşağıdaki gibi yapalım.",[586,758,759],{},[760,761],"img",{"alt":762,"src":763},"GetNews View ayarları","/images/2014/06/2014-06-05+11_43_34.jpg",[612,765,766],{},[615,767,768,770],{},[589,769,728],{}," sayfasındayken, F5 ile projemizi açtığımızda, aşağıdaki görüntüyle karşılaştık. Bu noktada görsel\ndüzenleme ya da Türkçe'leştirme yapmayacağız. Konumuz Routing, dışına çıkmamaya gayret göstereceğim.",[586,772,773],{},[760,774],{"alt":775,"src":776},"GetNews metodu ekran çıktısı","/images/2014/06/2014-06-07+11_46_16.jpg",[612,778,779],{},[615,780,781,782,785,786,788],{},"Burada adrese dikkat edecek olursak eğer, ",[589,783,784],{},"News/GetNews"," şeklinde görünmektedir. Yani Controller'imiz ve Action'umuz\ndirekt adres olarak görüntülenmektedir. Çok daha karışık Action'larımız olacaktır. Bunları direkt adres çubuğunda\ngörüntülemek, güvenlik açığıdır (metodlarımıza direkt erişim mevcut çünkü), Seo'ya uygun değildir (farklı dillerde\nanlaşılır linkler oluşturmak isteyeceğiz) ya da biz farklı yönlendirmeler yapmak isteyeceğiz. Öncelikle ",[589,787,728],{},"\nAction'umuz için bir Route yazalım.",[586,790,791],{},[589,792,793],{},"Yeni Route Ekleme",[612,795,796,801],{},[615,797,798,800],{},[589,799,642],{}," dosyamızı açalım.",[615,802,803,806,807,809,810,812,813,815],{},[589,804,805],{},"Default"," isimli Route her zaman en altta kalmalıdır. Eğer biz Route'mizi ",[589,808,805],{}," isimli Route'mizin altına\nyazacak olursak, gelen isteği ",[589,811,805],{}," direkt karşılayıp yönlendirmesini yapacak ve bizim Route çalışmayacaktır.\nRoute'mizi aşağıdaki gibi ",[589,814,805],{}," Route'sinden önce ekleyelim.",[659,817,820],{"className":818,"code":819,"language":664},[662],"routes.MapRoute(\nname: \"GetNews\",\nurl: \"haberler/tum-haberler\",\ndefaults: new { controller = \"News\", action = \"GetNews\" }\n);\n",[645,821,819],{"__ignoreMap":346},[612,823,824],{},[615,825,826,827,830,831,833,834,837],{},"Böylelikle adres çubuğuna, ",[589,828,829],{},"haberler/tum-haberler"," girildiğinde sistem, ",[589,832,728],{}," Action'ununa yönlenecektir.\nŞimdi projemizi çalıştırıp,",[589,835,836],{},"localhost:.....(bu kısım sizde farklı olabilir)/haberler/tum-haberler"," adresine girelim.\nAşağıdaki görüntüde görülebileceği gibi, haberlerimiz listelendi.",[586,839,840],{},[760,841],{"alt":842,"src":843},"GetNews metodu Route'li ekran çıktısı","/images/2014/06/2014-06-07+11_49_411.jpg",[586,845,846],{},[589,847,848],{},"Parametreli Route Ekleme",[612,850,851],{},[615,852,853,854,856],{},"Şimdi de, parametreli bir Routing ekleyelim. Verilen Id'ye göre bir haberin görüntülenmesini sağlayalım. Bunun için *\n",[705,855,695],{},"*'e aşağıdaki Action'u ekleyelim.",[659,858,861],{"className":859,"code":860,"language":664},[662],"//Paramatre olarak gelen id'ye göre haberi getirir.\npublic ActionResult GetNew(int id)\n{\n    return View(news.Where(i => i.Id == id).SingleOrDefault());\n}\n",[645,862,860],{"__ignoreMap":346},[612,864,865],{},[615,866,867],{},"Action'umuza aşağıdaki ayarlarla bir View sayfası ekleyelim.",[586,869,870],{},[760,871],{"alt":872,"src":873},"GetNew View ekleme","/images/2014/06/2014-06-06+11_26_39.jpg",[612,875,876],{},[615,877,878],{},"Eklenen View sayfamızın içeriği aşağıdaki gibi görünmektedir.",[659,880,884],{"className":881,"code":882,"language":883,"meta":346,"style":346},"language-html shiki shiki-themes material-theme-lighter github-light github-dark","@model RoutingDeneme.Models.News\n\n@{\n    ViewBag.Title = \"GetNew\";\n}\n\n\u003Ch2>GetNew\u003C/h2>\n\n\u003Cdiv>\n    \u003Ch4>News\u003C/h4>\n    \u003Chr />\n    \u003Cdl class=\"dl-horizontal\">\n        \u003Cdt>\n            @Html.DisplayNameFor(model => model.Title)\n        \u003C/dt>\n\n        \u003Cdd>\n            @Html.DisplayFor(model => model.Title)\n        \u003C/dd>\n\n        \u003Cdt>\n            @Html.DisplayNameFor(model => model.Content)\n        \u003C/dt>\n\n        \u003Cdd>\n            @Html.DisplayFor(model => model.Content)\n        \u003C/dd>\n\n        \u003Cdt>\n            @Html.DisplayNameFor(model => model.CreatedDate)\n        \u003C/dt>\n\n        \u003Cdd>\n            @Html.DisplayFor(model => model.CreatedDate)\n        \u003C/dd>\n\n    \u003C/dl>\n\n\u003C/div>\n\u003Cp>\n    @Html.ActionLink(\"Edit\", \"Edit\", new { /* id = Model.PrimaryKey */ }) |\n    @Html.ActionLink(\"Back to List\", \"Index\")\n\u003C/p>\n","html",[645,885,886,895,900,906,912,918,923,948,953,963,982,993,1020,1031,1037,1047,1052,1062,1068,1077,1082,1091,1097,1106,1111,1120,1126,1135,1140,1149,1155,1164,1169,1178,1184,1193,1198,1208,1213,1222,1231,1237,1243],{"__ignoreMap":346},[887,888,891],"span",{"class":889,"line":890},"line",1,[887,892,894],{"class":893},"su5hD","@model RoutingDeneme.Models.News\n",[887,896,897],{"class":889,"line":347},[887,898,899],{"emptyLinePlaceholder":352},"\n",[887,901,903],{"class":889,"line":902},3,[887,904,905],{"class":893},"@{\n",[887,907,909],{"class":889,"line":908},4,[887,910,911],{"class":893},"    ViewBag.Title = \"GetNew\";\n",[887,913,915],{"class":889,"line":914},5,[887,916,917],{"class":893},"}\n",[887,919,921],{"class":889,"line":920},6,[887,922,899],{"emptyLinePlaceholder":352},[887,924,926,930,934,937,940,943,945],{"class":889,"line":925},7,[887,927,929],{"class":928},"sP7_E","\u003C",[887,931,933],{"class":932},"sQzsp","h2",[887,935,936],{"class":928},">",[887,938,939],{"class":893},"GetNew",[887,941,942],{"class":928},"\u003C/",[887,944,933],{"class":932},[887,946,947],{"class":928},">\n",[887,949,951],{"class":889,"line":950},8,[887,952,899],{"emptyLinePlaceholder":352},[887,954,956,958,961],{"class":889,"line":955},9,[887,957,929],{"class":928},[887,959,960],{"class":932},"div",[887,962,947],{"class":928},[887,964,966,969,972,974,976,978,980],{"class":889,"line":965},10,[887,967,968],{"class":928},"    \u003C",[887,970,971],{"class":932},"h4",[887,973,936],{"class":928},[887,975,680],{"class":893},[887,977,942],{"class":928},[887,979,971],{"class":932},[887,981,947],{"class":928},[887,983,985,987,990],{"class":889,"line":984},11,[887,986,968],{"class":928},[887,988,989],{"class":932},"hr",[887,991,992],{"class":928}," />\n",[887,994,996,998,1001,1005,1008,1012,1016,1018],{"class":889,"line":995},12,[887,997,968],{"class":928},[887,999,1000],{"class":932},"dl",[887,1002,1004],{"class":1003},"s9AJx"," class",[887,1006,1007],{"class":928},"=",[887,1009,1011],{"class":1010},"sjJ54","\"",[887,1013,1015],{"class":1014},"s_sjI","dl-horizontal",[887,1017,1011],{"class":1010},[887,1019,947],{"class":928},[887,1021,1023,1026,1029],{"class":889,"line":1022},13,[887,1024,1025],{"class":928},"        \u003C",[887,1027,1028],{"class":932},"dt",[887,1030,947],{"class":928},[887,1032,1034],{"class":889,"line":1033},14,[887,1035,1036],{"class":893},"            @Html.DisplayNameFor(model => model.Title)\n",[887,1038,1040,1043,1045],{"class":889,"line":1039},15,[887,1041,1042],{"class":928},"        \u003C/",[887,1044,1028],{"class":932},[887,1046,947],{"class":928},[887,1048,1050],{"class":889,"line":1049},16,[887,1051,899],{"emptyLinePlaceholder":352},[887,1053,1055,1057,1060],{"class":889,"line":1054},17,[887,1056,1025],{"class":928},[887,1058,1059],{"class":932},"dd",[887,1061,947],{"class":928},[887,1063,1065],{"class":889,"line":1064},18,[887,1066,1067],{"class":893},"            @Html.DisplayFor(model => model.Title)\n",[887,1069,1071,1073,1075],{"class":889,"line":1070},19,[887,1072,1042],{"class":928},[887,1074,1059],{"class":932},[887,1076,947],{"class":928},[887,1078,1080],{"class":889,"line":1079},20,[887,1081,899],{"emptyLinePlaceholder":352},[887,1083,1085,1087,1089],{"class":889,"line":1084},21,[887,1086,1025],{"class":928},[887,1088,1028],{"class":932},[887,1090,947],{"class":928},[887,1092,1094],{"class":889,"line":1093},22,[887,1095,1096],{"class":893},"            @Html.DisplayNameFor(model => model.Content)\n",[887,1098,1100,1102,1104],{"class":889,"line":1099},23,[887,1101,1042],{"class":928},[887,1103,1028],{"class":932},[887,1105,947],{"class":928},[887,1107,1109],{"class":889,"line":1108},24,[887,1110,899],{"emptyLinePlaceholder":352},[887,1112,1114,1116,1118],{"class":889,"line":1113},25,[887,1115,1025],{"class":928},[887,1117,1059],{"class":932},[887,1119,947],{"class":928},[887,1121,1123],{"class":889,"line":1122},26,[887,1124,1125],{"class":893},"            @Html.DisplayFor(model => model.Content)\n",[887,1127,1129,1131,1133],{"class":889,"line":1128},27,[887,1130,1042],{"class":928},[887,1132,1059],{"class":932},[887,1134,947],{"class":928},[887,1136,1138],{"class":889,"line":1137},28,[887,1139,899],{"emptyLinePlaceholder":352},[887,1141,1143,1145,1147],{"class":889,"line":1142},29,[887,1144,1025],{"class":928},[887,1146,1028],{"class":932},[887,1148,947],{"class":928},[887,1150,1152],{"class":889,"line":1151},30,[887,1153,1154],{"class":893},"            @Html.DisplayNameFor(model => model.CreatedDate)\n",[887,1156,1158,1160,1162],{"class":889,"line":1157},31,[887,1159,1042],{"class":928},[887,1161,1028],{"class":932},[887,1163,947],{"class":928},[887,1165,1167],{"class":889,"line":1166},32,[887,1168,899],{"emptyLinePlaceholder":352},[887,1170,1172,1174,1176],{"class":889,"line":1171},33,[887,1173,1025],{"class":928},[887,1175,1059],{"class":932},[887,1177,947],{"class":928},[887,1179,1181],{"class":889,"line":1180},34,[887,1182,1183],{"class":893},"            @Html.DisplayFor(model => model.CreatedDate)\n",[887,1185,1187,1189,1191],{"class":889,"line":1186},35,[887,1188,1042],{"class":928},[887,1190,1059],{"class":932},[887,1192,947],{"class":928},[887,1194,1196],{"class":889,"line":1195},36,[887,1197,899],{"emptyLinePlaceholder":352},[887,1199,1201,1204,1206],{"class":889,"line":1200},37,[887,1202,1203],{"class":928},"    \u003C/",[887,1205,1000],{"class":932},[887,1207,947],{"class":928},[887,1209,1211],{"class":889,"line":1210},38,[887,1212,899],{"emptyLinePlaceholder":352},[887,1214,1216,1218,1220],{"class":889,"line":1215},39,[887,1217,942],{"class":928},[887,1219,960],{"class":932},[887,1221,947],{"class":928},[887,1223,1225,1227,1229],{"class":889,"line":1224},40,[887,1226,929],{"class":928},[887,1228,586],{"class":932},[887,1230,947],{"class":928},[887,1232,1234],{"class":889,"line":1233},41,[887,1235,1236],{"class":893},"    @Html.ActionLink(\"Edit\", \"Edit\", new { /* id = Model.PrimaryKey */ }) |\n",[887,1238,1240],{"class":889,"line":1239},42,[887,1241,1242],{"class":893},"    @Html.ActionLink(\"Back to List\", \"Index\")\n",[887,1244,1246,1248,1250],{"class":889,"line":1245},43,[887,1247,942],{"class":928},[887,1249,586],{"class":932},[887,1251,947],{"class":928},[612,1253,1254],{},[615,1255,1256,1257,1260],{},"Şimdi projemizi çalıştırıp,",[589,1258,1259],{},"localhost:....(burası size göre farklıdır)/News/GetNew/1"," şeklinde adrese gitmek\nistediğimizde, 1 numaralı Id'ye sahip olan haberin detayları ekrana gelecektir.",[586,1262,1263],{},[760,1264],{"alt":1265,"src":1266},"GetNew metod çıktısı","/images/2014/06/2014-06-07+12_58_22.jpg",[612,1268,1269],{},[615,1270,1271,1272,1274],{},"Şimdi bu metodumuza da bir Route yazıp, adresi anlamlı hale getirelim. ",[589,1273,642],{}," dosyamızı açalım\nve içeriğine, aşağıdaki Route metodunu ekleyelim (metodumuzu Default isimli metoddan önce eklemeyi unutmayalım).",[659,1276,1279],{"className":1277,"code":1278,"language":664},[662],"routes.MapRoute(\nname: \"GetNew\",\nurl: \"haberler/haber-detay/{id}\",\ndefaults: new { controller = \"News\", action = \"GetNew\", id = \"\" }\n);\n",[645,1280,1278],{"__ignoreMap":346},[612,1282,1283],{},[615,1284,1285,1286,1289],{},"Şimdi projemizi çalıştırıp, adres çubuğuna ",[589,1287,1288],{},"localhost:....(burası size göre farklıdır)/haberler/haber-detay/1"," yazıp\ngirdiğimizde, 1 numaralı id'ye sahip haber ekrana gelecektir.",[586,1291,1292],{},[760,1293],{"alt":1294,"src":1295},"GetNew metodu Route'li ekran çıktısı","/images/2014/06/2014-06-07+12_59_48.jpg",[586,1297,1298,1299,1302],{},"Bu noktada parametreler ile çeşitli kombinasyonlar yapabiliriz. Örneğin ",[589,1300,1301],{"kategori":346},"/{alt-kategori}/{id}"," gibi\ntanımlamalar yaparak, çok esnek Route'ler tanımlayabiliriz. Bu kısım tamamen ihtiyaçlarımıza göre şekillenecektir.",[586,1304,1305],{},[589,1306,1307],{},"ROUTE'LERDE KISITLAMALAR",[586,1309,1310],{},[589,1311,1312],{},"Regular Expressions (Düzenli İfadeler) ile Kısıtlama",[586,1314,1315],{},"Güvenlik ve doğru Route eşleşmeleri tanımlayabilmek için, Route'lerimize kısıtlamalar, filtreler tanımlayabiliriz.\nBöylelikle tam bir eşleşme sağlayarak, ayrıca güvenlik katmanımızın da daha sağlam olmasını sağlayabiliriz.",[612,1317,1318],{},[615,1319,1320,1323],{},[645,1321,1322],{},"Title"," formatında özel bir eşleşme isteğimiz olduğunu varsayarak, NewsController'imize bir Action yazalım.",[659,1325,1328],{"className":1326,"code":1327,"language":664},[662],"//Parametre olarak gelen id değerine göre haberi getirir.\npublic ActionResult GetNewByTitle(string id)\n{\n    return View(news.Where(i => i.Title == id).SingleOrDefault());\n}\n",[645,1329,1327],{"__ignoreMap":346},[586,1331,1332,1333,1335],{},"Burada gelen parametreye göre ",[645,1334,1322],{}," ile eşleşen haber ekran getirilecektir.",[586,1337,1338],{},"Not : Parametre ismine title yerine id vermemizin sebebi, sistemde tanımlı halde gelen Default Route'sinde id\nparametresi tanımlı durumdadır. Buradan, Route tanımlamamız gerekliliği de, açıkça ortaya çıkmaktadır. Biz bu\nparametreyi Route tanımlayarak daha mantıklı hale getireceğiz.",[612,1340,1341],{},[615,1342,1343,1344,1347],{},"Şimdi ",[589,1345,1346],{},"GetViewByTitle","View sayfamızı da, aşağıdaki ayarlarla oluşturalım.",[586,1349,1350],{},[760,1351],{"alt":1352,"src":1353},"GetNewByTitle View sayfası ekleme","/images/2014/06/2014-06-07+13_07_44.jpg",[612,1355,1356],{},[615,1357,1358,1359,1362],{},"Şimdi ise, projemizi çalıştırarak denemelerimizi yapmaya başlayalım. Projemiz çalıştığında, adres çubuğuna**\nlocalhost:....(burası size göre farklıdır)/News/GetNewByTitle/**",[589,1360,1361],{},"MilliTakimGalip"," yazalım. Çıktı olarak aşağıdaki\ngörüntüyü alacağız.",[586,1364,1365],{},[760,1366],{"alt":1367,"src":1368},"GetNewByTitle metodu ekran çıktısı","/images/2014/06/2014-06-07+13_10_51.jpg",[612,1370,1371],{},[615,1372,1373,1374,1377,1380],{},"Buraya kadar sorun yok. Ancak bir de adres çubuğunda ",[589,1375,1376],{},"localhost:....(burası size göre farklıdır)/News/GetNewByTitle/",[589,1378,1379],{},"5"," yazalım. Aşağıdaki görüntüyü alacağız.",[586,1382,1383],{},[760,1384],{"alt":1385,"src":1386},"GetNewByTitle metodu rakamsal ekran çıktısı","/images/2014/06/2014-06-07+13_12_34.jpg",[586,1388,1389],{},"Şimdi burada biraz düşünelim. Az evvel tam olarak ne oldu?",[586,1391,1392,1393,1395,1396,1399],{},"Adres çubuğunda ",[589,1394,1322],{}," kısmına rakamsal bir giriş yapıldı. Metod çalıştı ve veri kaynağımızda ",[589,1397,1398],{},"Title=5"," eşleşmesini\naraştırdı. Bulamadı ve ekrana veri boş geldi.",[586,1401,1402],{},"Oysa ki biz, sadece metinsel giriş yapılmasını istiyor olabiliriz. Böylelikle hatalı girişleri daha önceden engelleme\nimkanına sahip oluruz. Ayrıca her girilen veri, veritabanında sorgulanmayacağı için hem performans, hem de güvenlik\navantajını filtreleme sayesinde sağlayacağız. Regular Expression (Düzenli İfadeler), bu konuda bizim en büyük\nyardımcımız olacaktır.",[612,1404,1405],{},[615,1406,1407,1408,1410,1411,1413],{},"Hemen Route'mizi yazmaya başlayalım. ",[589,1409,642],{}," dosyamızı açalım. İçerisine ",[589,1412,805],{},"\nRoute'sinden önce aşağıdaki Route'yi ekleyelim.",[659,1415,1418],{"className":1416,"code":1417,"language":664},[662],"routes.MapRoute(\nname: \"GetNewByTitle\",\nurl: \"haberler/haber-detay-baslik/{title}\",\ndefaults: new { controller = \"News\", action = \"GetNewByTitle\", title = \"\" },\nconstraints: new { title = @\"[a-zA-Z]+\" } //Burada yönlendirmenin yapılabilmesi için\n//title verisinin yalnızca metinsel olmasını şart koştuk.\n);\n",[645,1419,1417],{"__ignoreMap":346},[612,1421,1422],{},[615,1423,1424,1425,1428],{},"Route'mizi ekledikten sonra, ",[589,1426,1427],{},"GetNewByTitle"," Action'umuzu aşağıdaki gibi güncelleyelim.",[659,1430,1433],{"className":1431,"code":1432,"language":664},[662],"//Parametre olarak gelen title değerine göre haberi getirir.\npublic ActionResult GetNewByTitle(string title)\n{\n    return View(news.Where(i => i.Title == title).SingleOrDefault());\n}\n",[645,1434,1432],{"__ignoreMap":346},[612,1436,1437],{},[615,1438,1439,1440,1443],{},"Şimdi hemen testlerimizi yapalım. Projeyi çalıştırıp, ",[589,1441,1442],{},"localhost:....(burası size göre farklıdır)\n/haberler/haber-detay-baslik/MilliTakimGalip"," adresine gittiğimizde aşağıdaki ekranı alacağız.",[586,1445,1446],{},[760,1447],{"alt":1448,"src":1449},"GetNewByTitle metodu Route'li ekran çıktısı","/images/2014/06/2014-06-07+13_39_26.jpg",[586,1451,1452],{},"Bu ve buna benzer şekilde, çeşitli Regular Expressions'lar vasıtasıyla çok kullanışlı filtreler tanımlayabiliriz.\nRegular Expressions ile ilgili internette pek çok hazır kalıplar, eğitimler mevcut.",[586,1454,1455],{},[589,1456,1457],{},"Http Metodu ile Kısıtlama",[586,1459,1460,1461,1464,1465,1468,1469,1472],{},"Gelen sayfa taleplerinin, ",[589,1462,1463],{},"Get",", ",[589,1466,1467],{},"Post"," vs. olduğunda eşleşmesini sağlamak için, ",[589,1470,1471],{},"Http"," metodunu kullanabiliriz.",[612,1474,1475],{},[615,1476,1477,1480],{},[589,1478,1479],{},"Controllers>NewsController.cs"," içerisine aşağıdaki Action'u ekleyelim.",[659,1482,1485],{"className":1483,"code":1484,"language":664},[662],"//Burada listeye bir kayıt yapılmakta.\npublic ActionResult SaveNew()\n{\n    //id olarak listemizdeki en son eklenen id'nin sayısı bir arttırlıp kayıt yapılmaktadır.\n    int id = (news.OrderByDescending(i => i.Id).SingleOrDefault().Id+1);\n    news.Add(new News()\n    {\n        Content = \"Hava olaylarındaki anormallikler dikkat çekici olmaya başladı\",\n        CreatedDate = DateTime.Now,\n        Title = \"Hava Olaylarındaki Anormallikler\",\n        Id = id\n    });\n    return View();\n}\n",[645,1486,1484],{"__ignoreMap":346},[612,1488,1489],{},[615,1490,1491],{},"Şimdi de aşağıdaki ayarlarla View'imizi ekleyelim.",[586,1493,1494],{},[760,1495],{"alt":1496,"src":1497},"SaveNew View ayarları","/images/2014/06/2014-06-10+11_32_02.jpg",[612,1499,1500],{},[615,1501,1502,1503,1505,1506,1508],{},"Son olarak ",[589,1504,642],{}," dosyamıza aşağıdaki Route'yi ",[589,1507,805],{}," isimli Route'den önce ekleyelim.",[659,1510,1513],{"className":1511,"code":1512,"language":664},[662],"routes.MapRoute(\nname: \"SaveNew\",\nurl: \"haberler/yeni-haber\",\ndefaults: new { controller = \"News\", action = \"SaveNew\" },\nconstraints: new { method = new HttpMethodConstraint(\"POST\") }\n//Yalnızca Post taleplerinde eşleşecek\n);\n",[645,1514,1512],{"__ignoreMap":346},[586,1516,1517,1518,1520,1521,1464,1524,1527],{},"Böylelikle gelen isteklerin yalnızca ",[589,1519,1467],{}," olaması durumunda eşleşmeyi sağlamış olduk. Bu noktada Action metodunun\nüzerine ",[645,1522,1523],{},"[HttpPost]",[645,1525,1526],{},"[HttpGet]"," vs. Attribute'ler ekleyerek de daha kolay bir şekilde bu kısıtlamayı sağlayabiliriz.\nAşağıdaki gibi;",[659,1529,1532],{"className":1530,"code":1531,"language":664},[662],"[HttpPost]\n//Burada listeye bir kayıt yapılmakta.\npublic ActionResult SaveNew()\n{\n    //id olarak listemizdeki en son eklenen id'nin sayısı bir arttırlıp kayıt yapılmaktadır.\n    int id = (news.OrderByDescending(i => i.Id).SingleOrDefault().Id+1);\n    news.Add(new News()\n    {\n        Content = \"Hava olaylarındaki anormallikler dikkat çekici olmaya başladı\",\n        CreatedDate = DateTime.Now,\n        Title = \"Hava Olaylarındaki Anormallikler\",\n        Id = id\n    });\n    return View();\n}\n",[645,1533,1531],{"__ignoreMap":346},[586,1535,1536],{},[589,1537,1538],{},"Gelişmiş Kısıtlamalar",[586,1540,1541,1542,1545],{},"Çok daha gelişmiş sınamalar yapabilmek için kullanabileceğimiz ",[589,1543,1544],{},"IRouteConstraint"," Interface'si mevcuttur. Bu\nInterface'den alacağımız Implementation ile bir Class yazıp, gelişkin sınamalar yapabiliriz.",[586,1547,1548],{},"Hemen inceleyelim.",[612,1550,1551],{},[615,1552,1553,1554,1557,1558,1561],{},"Ana dizine ",[589,1555,1556],{},"RouteConstraint"," isimli bir klasör ekleyelim. İçerisine de ",[589,1559,1560],{},"TestConstraint"," isimli bir Class\nekleyelim. Bu Class'ın içeriğini aşağıdaki gibi dolduralım.",[659,1563,1566],{"className":1564,"code":1565,"language":664},[662],"using System.Web;\nusing System.Web.Routing;\n\nnamespace RoutingDeneme.RouteConstraint\n{\n    public class TestConstraint : IRouteConstraint //Burada IRouteConstraint'ten Implemantation alıyoruz.\n    {\n        //Match metodu, istediğimiz şekilde doğrulamalrı yapıp, geriye True ya da False döndürüyor,\n        //dönen sonuca göre Url eşleşmesi sağlanıyor, ya da sağlanmıyor.\n        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values,\n        RouteDirection routeDirection)\n        {\n        //Örneğimizde, kullanıcının oturum açıp, açmadığını kontrol edeceğiz.\n        if (httpContext.Request.IsAuthenticated)\n        {\n            return true;\n        }\n        else\n        {\n            return false;\n        }\n    }\n}\n}\n",[645,1567,1565],{"__ignoreMap":346},[612,1569,1570],{},[615,1571,1572,1574],{},[589,1573,1479],{}," içerisine aşağıdaki Action'umuzu ekleyelim.",[659,1576,1579],{"className":1577,"code":1578,"language":664},[662],"//Bu alana yalnızca üyelerin girmesini istiyoruz.\npublic ActionResult MemberArea()\n{\n    return View();\n}\n",[645,1580,1578],{"__ignoreMap":346},[612,1582,1583],{},[615,1584,1585,1586,1588],{},"Yukarıda oluşturduğumuz kısıtlama kontrolünü, Route'ye ekleyeceğiz.",[589,1587,642],{}," dosyamıza aşağıdaki\nRoute'yi ekleyelim.",[659,1590,1593],{"className":1591,"code":1592,"language":664},[662],"routes.MapRoute(\nname: \"MemberArea\",\nurl: \"uyelik\",\ndefaults: new { controller = \"News\", action = \"MemberArea\" },\nconstraints: new { test = new TestConstraint() }\n//Test Constraint'ten yeni bir örnek çağırıp, bağlıyoruz.\n);\n",[645,1594,1592],{"__ignoreMap":346},[586,1596,1597,1600],{},[589,1598,1599],{},"localhost:...(burası sizde farklıdır)/uyelik"," adresine gitmek istediğimizde, eşleşme olmayacaktır. Ancak oturum\naçtıysak, eşleşme olacaktır.",[586,1602,1603],{},[589,1604,1605],{},"404 Sayfa Bulunamadı Oluşturmak",[586,1607,1608,1609,1612,1613,1615],{},"Route'lerimizde ",[589,1610,1611],{},"(*)"," parametresini kullanarak, her türlü eşleşmeyi sağlayabilmekteyiz. ",[589,1614,1611],{},"'ın yerine ne gelirse\ngelsin, eşleşme sağlanacaktır.",[586,1617,1618],{},"Şimdi bir 404 sayfası oluşturulım.",[612,1620,1621],{},[615,1622,1623,1480],{},[589,1624,1625],{},"Controllers>NewController.cs",[659,1627,1630],{"className":1628,"code":1629,"language":664},[662],"//Eğer eşleşme olmazsa bu Action çalışacaktır.\npublic ActionResult NotFound()\n{\n    return View();\n}\n",[645,1631,1629],{"__ignoreMap":346},[612,1633,1634],{},[615,1635,1636,1637,1640],{},"Ardından da ",[589,1638,1639],{},"AddView"," diyerek View sayfamızı aşağıdaki ayarlarla ekleyelim.",[586,1642,1643],{},[760,1644],{"alt":1645,"src":1646},"NotFound View ekleme","/images/2014/06/2014-06-11+12_02_21.jpg",[612,1648,1649],{},[615,1650,1651],{},"Sayfa içeriğini aşağıdaki gibi düzenleyelim.",[659,1653,1655],{"className":881,"code":1654,"language":883,"meta":346,"style":346},"@{\n    ViewBag.Title = \"NotFound\";\n}\n\n\u003Ch2>Sayfa Bulunamadı\u003C/h2>\n",[645,1656,1657,1661,1666,1670,1674],{"__ignoreMap":346},[887,1658,1659],{"class":889,"line":890},[887,1660,905],{"class":893},[887,1662,1663],{"class":889,"line":347},[887,1664,1665],{"class":893},"    ViewBag.Title = \"NotFound\";\n",[887,1667,1668],{"class":889,"line":902},[887,1669,917],{"class":893},[887,1671,1672],{"class":889,"line":908},[887,1673,899],{"emptyLinePlaceholder":352},[887,1675,1676,1678,1680,1682,1685,1687,1689],{"class":889,"line":914},[887,1677,929],{"class":928},[887,1679,933],{"class":932},[887,1681,936],{"class":928},[887,1683,1684],{"class":893},"Sayfa Bulunamadı",[887,1686,942],{"class":928},[887,1688,933],{"class":932},[887,1690,947],{"class":928},[612,1692,1693],{},[615,1694,1695,1697,1698,1701],{},[589,1696,1556],{}," klasörünün içerisine ",[589,1699,1700],{},"NotFoundConstraint"," isimli aşağıdaki Class'ı ekleyeceğiz. Bu Class'ı\nekleme amacımız, eğer açılan sayfa ana sayfaysa bu eşleşmeyi pas geçip, ana sayfanın açılmasını sağlamak.",[659,1703,1706],{"className":1704,"code":1705,"language":664},[662],"using System.Web;\nusing System.Web.Routing;\n\nnamespace RoutingDeneme.RouteConstraint\n{\n    public class NotFoundConstraint : IRouteConstraint\n    {\n    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values,\n    RouteDirection routeDirection)\n    {\n        if (httpContext.Request.RawUrl == \"/\")\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    }\n    }\n}\n",[645,1707,1705],{"__ignoreMap":346},[612,1709,1710],{},[615,1711,1712,1713,1715,1716,815],{},"Şimdi de ",[589,1714,642],{}," içerisine aşağıdaki Route'yi ",[589,1717,805],{},[659,1719,1722],{"className":1720,"code":1721,"language":664},[662],"routes.MapRoute(\nname: \"NotFound\",\nurl: \"{*.}\",//Yıldız her ne olursa anlamına geliyor.\n//Yukarıdaki eşleşmeleri deneyip, olmadığını gördükten sonra, NotFound'a yönelecektir.\ndefaults: new { controller = \"News\", action = \"NotFound\" },\nconstraints: new { notFound = new NotFoundConstraint() }\n);\n",[645,1723,1721],{"__ignoreMap":346},[586,1725,1726],{},[589,1727,1728],{},"Route Pas Geçme",[586,1730,1731,1732,1735],{},"Bazı statik dosyalarımıza talep geldiğinde, bu talebin Controller - Action bazlı karşılanmasını istemeyebiliriz.\nBöylelikle direkt dosyaya ulaşım sağlanacaktır. Bunun için ",[589,1733,1734],{},"IgnoreRoute"," metodu kullanılmaktadır.",[612,1737,1738],{},[615,1739,1740,1741,1744,1745,1748,1749,1752],{},"Sistemde arama motorlarının okuması için, ",[589,1742,1743],{},"robots.txt"," dosyası oluşturacağız. Bu dosya arama motorunun nasıl\nindeksleme yapacağını bildiren bilgilere sahiptir. Projemizin ana dizinine robots isminde bir metin belgesi (txt)\nekleyelim. Bunun için, projemizin üzerine sağ tıklayıp ",[589,1746,1747],{},"Add>New Item"," diyelim. Çıkan ekranda sağ üst kısımdaki alana\ntext yazıp, aratalım. Çıkan sonuçlarda aşağıdaki gibi ",[589,1750,1751],{},"Text File","'yi seçelim. Dosya içeriğini doldurmamıza gerek\nyok.",[586,1754,1755],{},[760,1756],{"alt":1757,"src":1758},"Metin belgesi ekleme","/images/2014/06/2014-06-18+10_41_20.jpg",[612,1760,1761],{},[615,1762,1712,1763,1765],{},[589,1764,642],{}," dosyasını açıp aşağıdaki satırdan,",[659,1767,1770],{"className":1768,"code":1769,"language":664},[662],"routes.IgnoreRoute(\"{resource}.axd/{*pathInfo}\");\n",[645,1771,1769],{"__ignoreMap":346},[586,1773,1774],{},"hemen sonra aşağıdaki metodumuzu ekleyelim.",[659,1776,1779],{"className":1777,"code":1778,"language":664},[662],"routes.IgnoreRoute(\"robots.txt\");\n",[645,1780,1778],{"__ignoreMap":346},[586,1782,1783,1784,1786],{},"Artık, sitemize ",[589,1785,1743],{}," talebi geldiğinde, direkt dosyamıza erişim sağlanabilecektir.",[586,1788,1789],{},[589,1790,1791],{},"AREA'LAR İÇİN ROUTE",[586,1793,1794,1795,1798,1799,1801,1802,1805,1806,1808,1809,1812,1813,1816],{},"Sitemizde, eğer ",[589,1796,1797],{},"Area"," sistemini kullanıp parçalara ayırıyorsak, her eklediğimiz ",[589,1800,1797],{}," için ",[589,1803,1804],{},"...(area adı)\nAreaRegistration"," şeklinde dosya otomatik olarak oluşturulmaktadır. Biz her ",[589,1807,1797],{}," için bu dosyalara metodlar ekleme\nşansına sahibiz. En sonunda tüm eklediğimiz metodlar, ",[589,1810,1811],{},"Global.asax"," dosyasında çağırılan, *\n",[705,1814,1815],{},"AreaRegistration.RegisterAllAreas()","* metodu ile birleştirilerek, sistemde aktif hale getirilmektedir.",[586,1818,1819],{},[589,1820,1821],{},"ASP.NET MVC 5 ROUTE YENİLİKLERİ",[586,1823,1824,1825,1827],{},"Asp.Net Mvc5 ile gelen bir takım yeniliklerin yanında, Route konumuza uygun olarak işleyeceğimiz, Route yeniliğine\nbakalım. Normalde her Action için Route yazıp, ",[589,1826,647],{}," dosyasına ekliyoruz. Mvc 5 ile bu işlem daha da\nkolaylaştı ve kullanışlılığı arttırıldı.",[586,1829,1830],{},"Bundan sonra artık direkt olarak Action'un üzerine yazacağımız bir Attribute ile Route yapabiliyoruz. Bu sistemi aktif\netmek için öncelikle,",[612,1832,1833],{},[615,1834,1835,1837],{},[589,1836,642],{}," dosyasının içerisine,",[659,1839,1842],{"className":1840,"code":1841,"language":664},[662],"//Asp.Net Mvc5 Route sistemini aktif ediyoruz.\nroutes.MapMvcAttributeRoutes();\n",[645,1843,1841],{"__ignoreMap":346},[586,1845,1846],{},"satırını ekliyoruz.",[612,1848,1849,1852],{},[615,1850,1851],{},"Projemizi derleyelim.",[615,1853,1343,1854,1857],{},[589,1855,1856],{},"NewController","'imizin içerisine aşağıdaki Action'u ekleyelim.",[659,1859,1862],{"className":1860,"code":1861,"language":664},[662],"public ActionResult Mvc5()\n{\n    return View();\n}\n",[645,1863,1861],{"__ignoreMap":346},[612,1865,1866],{},[615,1867,1868,1869,1872],{},"Hemen ",[589,1870,1871],{},"Mvc5"," isimli View sayfamızı da ekleyelim. İçeriğini aşağıdaki gibi dolduralım.",[659,1874,1876],{"className":881,"code":1875,"language":883,"meta":346,"style":346},"@{\n    ViewBag.Title = \"Mvc5\";\n}\n\n\u003Ch2>Mvc5\u003C/h2>\n\n\u003Ch3>Burada Mvc5 Yeniliklerini Test Ettik\u003C/h3>\n",[645,1877,1878,1882,1887,1891,1895,1911,1915],{"__ignoreMap":346},[887,1879,1880],{"class":889,"line":890},[887,1881,905],{"class":893},[887,1883,1884],{"class":889,"line":347},[887,1885,1886],{"class":893},"    ViewBag.Title = \"Mvc5\";\n",[887,1888,1889],{"class":889,"line":902},[887,1890,917],{"class":893},[887,1892,1893],{"class":889,"line":908},[887,1894,899],{"emptyLinePlaceholder":352},[887,1896,1897,1899,1901,1903,1905,1907,1909],{"class":889,"line":914},[887,1898,929],{"class":928},[887,1900,933],{"class":932},[887,1902,936],{"class":928},[887,1904,1871],{"class":893},[887,1906,942],{"class":928},[887,1908,933],{"class":932},[887,1910,947],{"class":928},[887,1912,1913],{"class":889,"line":920},[887,1914,899],{"emptyLinePlaceholder":352},[887,1916,1917,1919,1922,1924,1927,1929,1931],{"class":889,"line":925},[887,1918,929],{"class":928},[887,1920,1921],{"class":932},"h3",[887,1923,936],{"class":928},[887,1925,1926],{"class":893},"Burada Mvc5 Yeniliklerini Test Ettik",[887,1928,942],{"class":928},[887,1930,1921],{"class":932},[887,1932,947],{"class":928},[612,1934,1935],{},[615,1936,1937],{},"Buraya kadar herşey normal. Şimdi ise Route'mizi ekleyeceğiz. Az evvel eklediğimiz Action'unun üzerine Route\nAttribute'mizi ekleyeceğiz. Action'umuz aşağıdaki gibi olacak.",[659,1939,1942],{"className":1940,"code":1941,"language":664},[662],"[Route(\"mvc5-test\")]\npublic ActionResult Mvc5()\n{\n    return View();\n}\n",[645,1943,1941],{"__ignoreMap":346},[612,1945,1946],{},[615,1947,1948,1949,1952],{},"Görüldüğü üzere çok basit bir şekilde Route tanımladık. Şimdi projeyi çalıştırıp,",[589,1950,1951],{},"localhost:.....(bu kısım sizde\nfarklı olabilir)/mvc5-test"," adresine gidelim. Görüldüğü üzere aşağıdaki ekran geldi.",[586,1954,1955],{},[760,1956],{"alt":1957,"src":1958},"Mvc5 yenilik ekran çıktısı","/images/2014/06/2014-06-18+11_15_20.jpg",[586,1960,1961],{},"Böylelikle çok detaylı bir şekilde, Asp.Net Mvc konusunda Route'yi inceledik.",[586,1963,1964,1965,1970],{},"Proje\ndosyasını ",[1966,1967,1969],"a",{"href":1968},"/images/proje-dosyalar/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler/RoutingDeneme.zip","buradan","\nindirebilirsiniz.",[586,1972,1973],{},"Hepinize kolaylıklar diliyoruz.",[1975,1976,1977],"style",{},"html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s9AJx, html code.shiki .s9AJx{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":346,"searchDepth":347,"depth":347,"links":1979},[],"2014/06/routing.jpg","2014-06-18T00:00:00.000Z",{},{"title":83,"description":591},"0ycPdZ6YzpfO-sPWiRWd9t1gbb00BUHeuTZDh3Y_TPY",1762871734185]