﻿
{"id":1414,"date":"2013-02-21T16:40:41","date_gmt":"2013-02-21T16:40:41","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1414"},"modified":"2013-02-21T16:40:41","modified_gmt":"2013-02-21T16:40:41","slug":"mvc-4-0-layout-sayfasi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/mvc-4-0-layout-sayfasi\/","title":{"rendered":"MVC 4.0 Layout Sayfas\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Asp.NET Web Form platformunda sayfa tasar\u0131m\u0131 i\u00e7in kulland\u0131\u011f\u0131m\u0131z Master Page yap\u0131lar\u0131, projemizde ki di\u011fer .aspx sayfalar\u0131 i\u00e7in tasar\u0131m karma\u015f\u0131kl\u0131\u011f\u0131na engel olmakla birlikte i\u015fimizi olduk\u00e7a kolayla\u015ft\u0131rmaktad\u0131r.Mevzu Asp.NET MVC Razor View Engine olay\u0131na gelince, Web Formlarda ki Master Page yap\u0131s\u0131na benzer &#8220;_Layout.cshtml&#8221; sayfalar\u0131n\u0131 kullanmaktay\u0131z.Bu makalemiz de, Layout sayfas\u0131yla ilgili teferruatlar\u0131 inceleyece\u011fiz.<br \/>\n<!--more--><br \/>\nMVC Razor View Engine mimarisinde \u00e7al\u0131\u015f\u0131rken, sayfa tasar\u0131m\u0131m\u0131z\u0131 ister her sayfa da teker teker haz\u0131rlayabiliriz, istersekte Layout sayfas\u0131nda tek seferlik haz\u0131rlayarak, sayfalar\u0131m\u0131z\u0131 Layout \u015fablonundan t\u00fcretebiliriz.<\/p>\n<p>\u015eimdi bir MVC 4.0 Razor projesi olu\u015ftural\u0131m ve konumuzu oradan irdelemeye devam edelim.<\/p>\n<p>Visual Studio derleyicisinden, olu\u015fturdu\u011fumuz projenin Solution Explorer penceresine g\u00f6z atarsak e\u011fer, Model &#8211; View &#8211; Controller katmanlar\u0131n\u0131 g\u00f6receksiniz.<span style=\"font-size: x-small;\">(MVC mimarisinin \u00e7al\u0131\u015fma yap\u0131s\u0131na \u00f6nceki MVC 2.0 versiyonuyla irdeledi\u011fimiz yaz\u0131lar\u0131mda de\u011finmi\u015ftim.)<\/span><\/p>\n<p>A\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc incelerseniz e\u011fer, View katman\u0131 alt\u0131nda ki &#8220;Shared&#8221; klas\u00f6r\u00fc i\u00e7inde &#8220;_Layout.cshtml&#8221; isimli bir Layout sayfam\u0131z mevcut.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/mvc-4-0-layout-sayfasi.html\/mvc40razorsolution\" rel=\"attachment wp-att-1415\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1415\" alt=\"MVC40RazorSolution\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/MVC40RazorSolution.png\" width=\"204\" height=\"453\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/MVC40RazorSolution.png 204w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/MVC40RazorSolution-135x300.png 135w\" sizes=\"auto, (max-width: 204px) 100vw, 204px\" \/><\/a><\/p>\n<p>Bu dosyam\u0131z MVC projemiz de kullanaca\u011f\u0131m\u0131z Layout sayfam\u0131zd\u0131r.\u0130\u00e7eri\u011fini incelemeden \u00f6nce yukar\u0131da ki g\u00f6r\u00fcnt\u00fcde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz View katman\u0131 alt\u0131ndaki &#8220;_ViewStart.cshtml&#8221; isimli dosyadan bahsetmek istiyorum.<\/p>\n<p>Bu dosya, web projemizin View katman\u0131 i\u00e7inde bulunan b\u00fct\u00fcn .cshtml sayfalar\u0131n\u0131n ayn\u0131 Layout sayfas\u0131n\u0131 kullanaca\u011f\u0131n\u0131 belirtebiliriz.Sistem otomatik olarak bu dosyada belirtilen Layout dosyas\u0131n\u0131 i\u015faretleyecektir.\u015eimdi bu dosyan\u0131n kodlar\u0131n\u0131 inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---_ViewStart.cshtml---\r\n@{\r\n    Layout = &quot;~\/Views\/Shared\/_Layout.cshtml&quot;;\r\n}\r\n<\/pre>\n<p>&#8220;_ViewStart.cshtml&#8221; sayfas\u0131n\u0131n kodlar\u0131 yukar\u0131dan incelerseniz e\u011fer projemizde ki Layout sayfas\u0131n\u0131n &#8220;_Layout.cshtml&#8221; isimli dosyam\u0131z oldu\u011funu g\u00f6stermektedir.<\/p>\n<p>\u015eimdi &#8220;_Layout.cshtml&#8221; sayfam\u0131z\u0131 inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html lang=&quot;en&quot;&gt;\r\n    &lt;head&gt;\r\n        &lt;meta charset=&quot;utf-8&quot; \/&gt;\r\n        &lt;title&gt;@ViewBag.Title - My ASP.NET MVC Application&lt;\/title&gt;\r\n        &lt;link href=&quot;~\/favicon.ico&quot; rel=&quot;shortcut icon&quot; type=&quot;image\/x-icon&quot; \/&gt;\r\n        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; \/&gt;\r\n        @Styles.Render(&quot;~\/Content\/css&quot;)\r\n        @Scripts.Render(&quot;~\/bundles\/modernizr&quot;)\r\n    &lt;\/head&gt;\r\n    &lt;body&gt;\r\n        &lt;header&gt;\r\n            &lt;div class=&quot;content-wrapper&quot;&gt;\r\n                &lt;div class=&quot;float-left&quot;&gt;\r\n                    &lt;p class=&quot;site-title&quot;&gt;@Html.ActionLink(&quot;your logo here&quot;, &quot;Index&quot;, &quot;Home&quot;)&lt;\/p&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;float-right&quot;&gt;\r\n                    &lt;section id=&quot;login&quot;&gt;\r\n                        @Html.Partial(&quot;_LoginPartial&quot;)\r\n                    &lt;\/section&gt;\r\n                    &lt;nav&gt;\r\n                        &lt;ul id=&quot;menu&quot;&gt;\r\n                            &lt;li&gt;@Html.ActionLink(&quot;Home&quot;, &quot;Index&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                            &lt;li&gt;@Html.ActionLink(&quot;About&quot;, &quot;About&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                            &lt;li&gt;@Html.ActionLink(&quot;Contact&quot;, &quot;Contact&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                        &lt;\/ul&gt;\r\n                    &lt;\/nav&gt;\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/header&gt;\r\n        &lt;div id=&quot;body&quot;&gt;\r\n            @RenderSection(&quot;featured&quot;, required: false)\r\n            &lt;section class=&quot;content-wrapper main-content clear-fix&quot;&gt;\r\n                @RenderBody()\r\n            &lt;\/section&gt;\r\n        &lt;\/div&gt;\r\n        &lt;footer&gt;\r\n            &lt;div class=&quot;content-wrapper&quot;&gt;\r\n                &lt;div class=&quot;float-left&quot;&gt;\r\n                    &lt;p&gt;&amp;copy; @DateTime.Now.Year - My ASP.NET MVC Application&lt;\/p&gt;\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/footer&gt;\r\n        @Scripts.Render(&quot;~\/bundles\/jquery&quot;)\r\n        @RenderSection(&quot;scripts&quot;, required: false)\r\n    &lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>&#8220;_Layout.cshtml&#8221; sayfas\u0131n\u0131n kodlar\u0131n\u0131 yukar\u0131dan inceleyebilirsiniz.Visual Studio 2012 versiyonunda haz\u0131r olu\u015fturulan bir MVC projesinin varsay\u0131lan olarak gelen tasar\u0131m kodlar\u0131 Layout sayfam\u0131zda mevcuttur.Burada html kodlar\u0131na tak\u0131lman\u0131za gerek yok.Burada dikkat etmemiz gereken bir ka\u00e7 husus ve kural vard\u0131r.\u015eimdi onlar\u0131 inceleyelim..<\/p>\n<p><span style=\"color: #339966;\"><em><strong>RenderBody() metodu<\/strong><\/em><\/span>;<br \/>\nBu metod teorik olarak Layout sayfam\u0131z\u0131n temelini te\u015fkil etmektedir.Yani buradaki kast\u0131m, bu Layout sayfas\u0131ndan t\u00fcretilen bir .cshtml sayfas\u0131n\u0131n ilk yay\u0131nlanaca\u011f\u0131 alan varsay\u0131lan olarak RenderBody() metodunun bulundu\u011fu aland\u0131r.<\/p>\n<p>\u00d6rnek olarak projemize bir &#8220;Ornek(Controller).cs&#8221; ad\u0131nda bir Controller s\u0131n\u0131f\u0131 ekleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---OrnekController.cs---\r\n    public class OrnekController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Ekledi\u011fimiz Controller s\u0131n\u0131f\u0131m\u0131z\u0131n i\u00e7inde varsay\u0131lan olarak ActionResult tipinden &#8220;Index&#8221; isminde metodumuz gelmektedir.\u015eimdi bu &#8220;Index&#8221; isimli metodumuzun View katman\u0131nda ki sayfas\u0131n\u0131 olu\u015ftural\u0131m.Tabi dikkat etmemiz gereken nokta, olu\u015fturaca\u011f\u0131m\u0131z sayfay\u0131 &#8220;_Layout.cshtml&#8221; ismindeki Layout sayfam\u0131zdan t\u00fcrevlendirmektir.&#8221;_ViewStart.cshtml&#8221; isimli dosyam\u0131zda Layout sayfam\u0131z\u0131n yolunu bahsetti\u011fimizden dolay\u0131 MasterPage olarak Layout sayfam\u0131z\u0131 g\u00f6stermemize gerek yok.Ancak varsayal\u0131m ki, &#8220;_ViewStart.cshtml&#8221; sayfas\u0131nda Layout sayfam\u0131z\u0131n yolunu belirtmedik, i\u015fte o zaman a\u015fa\u011f\u0131daki kodu View katman\u0131nda ki sayfalar\u0131m\u0131zda kullanabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n    Layout = &quot;~\/Views\/Shared\/_Layout.cshtml&quot;;\r\n}\r\n<\/pre>\n<p>Her neyse..Biz konuyu da\u011f\u0131tmayal\u0131m.Index metodumuzun View kayman\u0131ndaki sayfas\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n&lt;h2&gt;Index&lt;\/h2&gt;\r\nMerhaba, bu Index Action'\u0131n\u0131n View katman\u0131nda ki sunumudur.\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, olu\u015fturmu\u015f oldu\u011fumuz &#8220;Index.cshtml&#8221; sayfas\u0131n\u0131n i\u00e7ini yukar\u0131daki gibi kodlad\u0131m.E\u011fer projemizi derleyip \u00e7al\u0131\u015ft\u0131r\u0131rsak e\u011fer, &#8220;Ornek(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131m\u0131zda ki Index isimli Action tetiklenirse, &#8220;Index.cshtml&#8221; sayfas\u0131n\u0131n i\u00e7eri\u011fi RenderBody() metodumuzun bulundu\u011fu alanda g\u00f6sterilecektir.<\/p>\n<p>E\u011fer ki, Asp.NET Web Form mimarisinde ki Master Page yap\u0131s\u0131nda bulunan &#8220;ContentPlaceHolder&#8221; nesnesi gibi, tasar\u0131m\u0131n istedi\u011fimiz alan\u0131na b\u00f6l\u00fcm eklemek istiyorsak RenderSection() metodu kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p><span style=\"color: #339966;\"><em><strong>RenderSection() metodu<\/strong><\/em><\/span>;<br \/>\nBir Layout sayfas\u0131 i\u00e7inde bir tane RenderBody() metodu kullanmak zorunludur.Ancak birden fazlada kullanamay\u0131z.<br \/>\nFakat az yukar\u0131da bahsetti\u011fimiz gibi, tasar\u0131m\u0131m\u0131za b\u00f6l\u00fcm eklemek istiyorsak e\u011fer birden fazla RenderSection() metodunu kullanabiliriz.\u015eimdi yaz\u0131m\u0131n \u00fcst sat\u0131rlar\u0131nda bulunan &#8220;_Layout.cshtml&#8221; isimli Layout dosyas\u0131n\u0131n kodlar\u0131n\u0131 inceleyiniz.Orada g\u00f6rece\u011finiz gibi bir ka\u00e7tane &#8220;RenderSection() metodu kullan\u0131lm\u0131\u015f.<\/p>\n<p>RenderSection() metodumuzun prototipi a\u015fa\u011f\u0131daki \u015fekildedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@RenderSection(&quot;Metodun yaz\u0131ld\u0131\u011f\u0131 alana bir isim vermi\u015f oluruz.&quot;)\r\n<\/pre>\n<p>RenderSection() metodu sayesinde tasar\u0131m\u0131m\u0131z da ayarlad\u0131\u011f\u0131m\u0131z b\u00f6l\u00fcm\u00fc kullanabilmek i\u00e7in, &#8220;section&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fc kullan\u0131lmaktad\u0131r.<\/p>\n<p>&#8220;Ornek(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131nda bulunan Index isimli metodumuzun View dosyas\u0131n\u0131n i\u00e7eri\u011fini yay\u0131nlamak i\u00e7in hi\u00e7 bir alan belirtmedi\u011fimizden dolay\u0131 varsay\u0131lan olarak RenderBody() metodunun bulundu\u011fu alanda i\u00e7eri\u011fimiz yay\u0131nlanmaya ba\u015fland\u0131.Dolay\u0131s\u0131yla, ben RenderSection() metodumla se\u00e7ti\u011fim alanda i\u00e7erik yay\u0131nlamak istiyorsam a\u015fa\u011f\u0131daki gibi View katman\u0131ndaki dosyam\u0131z\u0131 tazelemem laz\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n&lt;h2&gt;Index&lt;\/h2&gt;\r\n@section featured\r\n{\r\nMerhaba, bu Index Action'\u0131n\u0131n View katman\u0131nda ki sunumudur.\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, RenderSection() metodu ile i\u015faretlenmi\u015f ve &#8220;featured&#8221; ismi verilmi\u015f alana i\u015flemlerimi yay\u0131nlad\u0131m.E\u011fer projeyi derleyip \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z RenderBody() metodu de\u011fil &#8220;featured&#8221; isminden se\u00e7mi\u015f oldu\u011fumuz RenderSection() metodumuzun bulundu\u011fu yerde yay\u0131nlama i\u015flemi yapm\u0131\u015f olaca\u011f\u0131m.Bu arada hat\u0131rlatma ama\u00e7l\u0131 s\u00f6ylemekte fayda var diye d\u00fc\u015f\u00fcn\u00fcyorum, &#8220;featured&#8221; isim alan\u0131na sahip RenderSection() metodu projemizin Layout sayfas\u0131nda mevcuttur.<\/p>\n<p>E\u011fer derman\u0131 kal\u0131pta buraya kadar okuyan\u0131n\u0131z varsa kesinlikle kafan\u0131za a\u015fa\u011f\u0131daki sorun tak\u0131ld\u0131.<br \/>\n&#8220;Bu herif _Layout.cshtml sayfas\u0131ndaki RenderSection() metodunu yanl\u0131\u015f g\u00f6sterdi.&#8221; \ud83d\ude42<\/p>\n<p>Evet biliyorum.Bu hatay\u0131 yapt\u0131\u011f\u0131m\u0131n fark\u0131nday\u0131m.\u00c7\u00fcnk\u00fc bizzat yaz\u0131m\u0131z\u0131n \u00fcst sat\u0131rlar\u0131nda yazm\u0131\u015f oldu\u011fum &#8220;_Layout.cshtml&#8221; sayfas\u0131n\u0131n i\u00e7inde kullan\u0131lan RenderSection() metodu \u015fu \u015fekildeyken,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@RenderSection(&quot;featured&quot;, required: false)\r\n<\/pre>\n<p>ben prototipte \u015fu \u015fekilde g\u00f6sterdim,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@RenderSection(&quot;bolumadi&quot;)\r\n<\/pre>\n<p>Hmm..Acaba neden b\u00f6yle yapt\u0131m.\u00c7\u00fcnk\u00fc iki t\u00fcrl\u00fcde derleyici hatas\u0131z \u00e7al\u0131\u015facakt\u0131r.Ancak Layout sayfam\u0131zda ki RenderSection() metodumuzda neden b\u00f6l\u00fcm ad\u0131ndan sonra bir parametre daha varsay\u0131lan olarak otomatikman girilmi\u015f diye sorarsan\u0131z e\u011fer, View katman\u0131nda ki dosyada bulunan &#8220;section&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcyle i\u015faretlenmi\u015f alanlar\u0131m\u0131z bulunamazsa program \u00e7al\u0131\u015fma zaman\u0131nda hata verecektir.Yani \u00f6rneklendirirsem, RenderSection(&#8220;Ahmet&#8221;) diye bir metod tan\u0131mlam\u0131\u015f olay\u0131m Layout sayfamda.Eee haliyle, bu Layout sayfam derlendi\u011finde, RenderSection metoduna geldi\u011finde &#8220;Ahmet&#8221; isminde bir &#8220;section&#8221; arayacakt\u0131r.E\u011fer bulamazsa da hata verecektir.<\/p>\n<p>\u0130\u015fte Layout sayfas\u0131nda RenderSection metoduyla i\u015faretlenmi\u015f alan\u0131n, View katman\u0131ndaki sayfas\u0131nda &#8220;section&#8221; \u0131 bulunmad\u0131\u011f\u0131 zaman hata vermemesi i\u00e7in a\u015fa\u011f\u0131daki gibi kullan\u0131lmaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@RenderSection(&quot;alanadi&quot;, required: false)\r\n<\/pre>\n<p>veya<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@RenderSection(&quot;alanadi&quot;, false)\r\n<\/pre>\n<p>Bir &#8220;section&#8221; \u0131n olup olmad\u0131\u011f\u0131n\u0131 anlamak i\u00e7in &#8220;IsSectionDefined&#8221; metodu kullan\u0131lmal\u0131d\u0131r.<br \/>\nTabi bu makalemizde \u00f6rnek olarak \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z Layout sayfam\u0131zda bu metodla ilgili bir \u00f6rnek bulunmamaktad\u0131r ancak bunuda g\u00f6stermemde fayda var.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        @{if (IsSectionDefined(&quot;ahmet&quot;))\r\n          {\r\n            @RenderSection(&quot;ahmet&quot;)\r\n          }\r\n          else\r\n          {\r\n              Write(&quot;Ahmet isimli section bulunmamaktad\u0131r.&quot;);\r\n          }\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer, Layout sayfam\u0131zda bir Section \u00e7a\u011f\u0131r\u0131rken \u00f6nceden var m\u0131? yok mu? kontrol ediliyor ve ona g\u00f6re Render ediliyor.<\/p>\n<p>Son olarak RenderPage() metodundan bahsedelim.<br \/>\n<span style=\"color: #339966;\"><em><strong>RenderPage() metodu<\/strong><\/em><\/span>;<br \/>\nRenderPage metodu ile projemizde bulunan herhangi bir View sayfas\u0131n\u0131n i\u00e7eri\u011fini, kullan\u0131ld\u0131\u011f\u0131 alanda yay\u0131nlayabiliriz.<\/p>\n<p>\u00d6rnek olarak olu\u015fturdu\u011fumuz projemizde &#8220;Ornek(Controller).cs&#8221; ismindeki Controller s\u0131n\u0131f\u0131n\u0131n i\u00e7ine &#8220;Sayfa&#8221; isminde bir ActionResult tipinden metod tan\u0131mlayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class OrnekController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n        public ActionResult Sayfa()\r\n        {\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu metodun View katman\u0131nda sayfas\u0131n\u0131 olu\u015fturup a\u015fa\u011f\u0131daki gibi d\u00fczenleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Sayfa&quot;;\r\n}\r\n&lt;h2&gt;Sayfa&lt;\/h2&gt;\r\nBu i\u00e7erik Sayfa Action'\u0131n\u0131n i\u00e7eri\u011fidir.\r\n<\/pre>\n<p>Layout sayfam\u0131zda RenderPage metodu ile &#8220;Sayfa.cshtml&#8221; sayfam\u0131z\u0131 yay\u0131nlayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html lang=&quot;en&quot;&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=&quot;utf-8&quot; \/&gt;\r\n    &lt;title&gt;@ViewBag.Title - My ASP.NET MVC Application&lt;\/title&gt;\r\n    &lt;link href=&quot;~\/favicon.ico&quot; rel=&quot;shortcut icon&quot; type=&quot;image\/x-icon&quot; \/&gt;\r\n    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; \/&gt;\r\n    @Styles.Render(&quot;~\/Content\/css&quot;)\r\n    @Scripts.Render(&quot;~\/bundles\/modernizr&quot;)\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;header&gt;\r\n     --- @RenderPage(&quot;~\/Views\/Ornek\/Sayfa.cshtml&quot;); ---\r\n        &lt;div class=&quot;content-wrapper&quot;&gt;\r\n            &lt;div class=&quot;float-left&quot;&gt;\r\n                &lt;p class=&quot;site-title&quot;&gt;@Html.ActionLink(&quot;your logo here&quot;, &quot;Index&quot;, &quot;Home&quot;)&lt;\/p&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;float-right&quot;&gt;\r\n                &lt;section id=&quot;login&quot;&gt;\r\n                    @Html.Partial(&quot;_LoginPartial&quot;)\r\n                &lt;\/section&gt;\r\n                &lt;nav&gt;\r\n                    &lt;ul id=&quot;menu&quot;&gt;\r\n                        &lt;li&gt;@Html.ActionLink(&quot;Home&quot;, &quot;Index&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                        &lt;li&gt;@Html.ActionLink(&quot;About&quot;, &quot;About&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                        &lt;li&gt;@Html.ActionLink(&quot;Contact&quot;, &quot;Contact&quot;, &quot;Home&quot;)&lt;\/li&gt;\r\n                    &lt;\/ul&gt;\r\n                &lt;\/nav&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/header&gt;\r\n    &lt;div id=&quot;body&quot;&gt;\r\n        @RenderSection(&quot;featured&quot;, required: false)\r\n        &lt;section class=&quot;content-wrapper main-content clear-fix&quot;&gt;\r\n            @RenderBody()\r\n        &lt;\/section&gt;\r\n    &lt;\/div&gt;\r\n    &lt;footer&gt;\r\n        &lt;div class=&quot;content-wrapper&quot;&gt;\r\n            &lt;div class=&quot;float-left&quot;&gt;\r\n                &lt;p&gt;&amp;copy; @DateTime.Now.Year - My ASP.NET MVC Application&lt;\/p&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/footer&gt;\r\n    @Scripts.Render(&quot;~\/bundles\/jquery&quot;)\r\n    @RenderSection(&quot;scripts&quot;, required: false)\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi RenderPage metodu ile &#8220;Sayfa.cshtml&#8221; sayfam\u0131z\u0131n i\u00e7eri\u011fini \u00e7a\u011f\u0131rm\u0131\u015f olduk.\u015eimdi projemizi derleyip \u00e7al\u0131\u015ft\u0131ral\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/mvc-4-0-layout-sayfasi.html\/mvc40layoutrenderpage\" rel=\"attachment wp-att-1426\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1426\" alt=\"mvc40LayoutRenderPage\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/mvc40LayoutRenderPage.png\" width=\"489\" height=\"335\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/mvc40LayoutRenderPage.png 489w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/02\/mvc40LayoutRenderPage-300x205.png 300w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/a><\/p>\n<p>Bu makalemizde Layout sayfas\u0131n\u0131n kendisi ve metod teferruat\u0131n\u0131 inceledi\u011fimizden dolay\u0131, Layout sayfam\u0131zda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz &#8220;@ViewBag.Title&#8221;,&#8221;@Styles.Render()&#8221; gibi kodlar\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131 bu yaz\u0131da a\u00e7\u0131klamayaca\u011f\u0131m.Di\u011fer makalelerimde bu kod ve metodlarla ilgili a\u00e7\u0131klamalar\u0131m\u0131 g\u00f6r\u00fcrs\u00fcn\u00fcz.<\/p>\n<p>Sonraki makalelerimiz de g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\nFaydalanman\u0131z dile\u011fiyle..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Asp.NET Web Form platformunda sayfa tasar\u0131m\u0131 i\u00e7in kulland\u0131\u011f\u0131m\u0131z Master Page yap\u0131lar\u0131, projemizde ki di\u011fer .aspx sayfalar\u0131 i\u00e7in tasar\u0131m karma\u015f\u0131kl\u0131\u011f\u0131na engel olmakla birlikte i\u015fimizi olduk\u00e7a kolayla\u015ft\u0131rmaktad\u0131r.Mevzu Asp.NET MVC Razor View Engine olay\u0131na gelince, Web Formlarda&#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":[345],"tags":[366,283,755,362,365,363,364],"class_list":["post-1414","post","type-post","status-publish","format-standard","hentry","category-mvc-4-0","tag-layout","tag-mvc","tag-mvc-4-0","tag-renderbody","tag-renderpage","tag-rendersection","tag-section"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1414","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=1414"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1414\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}