Osman KURT

Kendime Not

.Net MVC'de Tek Sayfa da Birden Fazla Model Kullanımı

Yeni yazmakta olduğum bir proje de karşılaştığım bir problem arkadaşlar, birden fazla modelimizi tek sayfa da kullanmak. Mvc de sayfa kodlama nasıldır kısaca onu özetlemek gerekirse, Bildiğiniz üzere bir ader modelimiz vardır modelimiz de propertilerimizi tanımlarız, daha sonra oluşturduğumuz modelimizi view sayfamıza referans olarak ekleriz views ekranımızın iç kısmını doldurduktan sonra controller kısmın da ise arka plan kodlarımızı gerçekleştiririz.

Buraya kadar herşey normal, peki aynı sayfa içinde iki modeli de kullanmak gerekir se ne yapacağız. İşlem basit arkadaşlar. Bir adet daha model oluşturuyoruz ve daha önceden oluşturduğumuz ve aynı sayfa da kullanmak istediğimiz modellerimizi bu modele ekliyoruz. Eklediğim örnek ta tam kullanımı mecuttur. Daha sonra en son oluşturduğumuz modeli views ekranımıza model olarak atıyoruz. Artık en son oluşturduğumuz ana modelimize eklenen bütün modellerimiz tek sayfa da kullanımımıza açık hale geldi. Kolay gelsin.

Gerekli örnek uygulamanın ufak bir giriş kısmını eklediğim örnek de bulabilirsiniz gerekli icelemeyi yaptıktan sonra fikir sahibi olacağınızdan eminim arkadaşlar.

Görüşmek üzere,

Osman KURT

.Net Yazılım | Yazılım Uzmanı

Örnek Uygulama (263,11 kb)

MVC 3 ile Layout (Masterpage) Kullanımı

Asp.net de bir web projesi geliştirdiyseniz kesinlikle masterpage ve contentplaceholder yapısını kullanmışınızdır.
Nasıl olurdu?
Bir proje oluşturursunuz daha sonra projenin içine bir adet bütün sayfalarda kullanmak üzere masterpage oluşturursunuz genel kodlarınızı bunun içine yazarsınız ve kullanıma açmak istediğiniz alanlara contentplaceholder koyarsınız ki diğer iç sayfalar da bu alanları kullanabilesiniz.

Aynı durum MVC için de geçerli.

MVC orje oluştururken de masterpage yerine Layout dediğimiz MVC’nin masterpage’lerini ekliyoruz. Araların a fark yok denecek kadar az. Ama bir sıkıntı var. Normal projelerimiz de kulandığımız sağ kısımda ki toolbox da contentplaceholder yok! ne yapmamaız gerekecek.
İşte burada devreye @RenderBody() dediğimiz sistem giriyor ve bizi aydınlatıyor. Tek yapmanız gereken yan kısımda ki kodu layout sayfamızın kullanmak istediğimiz kısmına yazmak.
Ayrıca her sayfa da tek tek kullanıma açmaya da gerek yok çünkü otomatik olarak görecektir ve alanı kullanmaya başlayacaktır.


Aynı master da ilinci @RenderBody() kullanmak diye bir sorunuz varsa da, üzgünüz kullanamıyorsunuz. Onun yerine @RenderSection(“Etiket”) kodumuz var. Bu kodumuzun kullanımını da bir sonra ki yazımızda göstereceğim.


Görüşmek üzere
Osman KURT

Neden MVC?

Birçok yazılım geliştirici arkadaşımızın emin ki aklında olan ve hala cevap bulamadığı sorulardan biridir.

Neden MVC?

Arladaşlar aslın da bu soru o kadar da zor bir soru değil. Olayı basite indirgeyerek düşünmek gerekirse .Net insanlar üzerinde şöyle bir etki yaratıyor, (" sürükle bırak programcılığı! "). Aslında pek de haksız sayılmazlar. Çünkü o kadar çok kompanentler var ki piyasa da neredeyse size ihtiyaç bile kalmıyor. Ama bunların iyi olduğu kadar kötü olduğu taraflar da var.

Birincisi hız. Her ne kadar artık pc ler çok çok iyi donanımlı da olsa internet hızlarımız o kadar olmasa da fena sayılmazken ne olursa olsun kullanıcı hıza ihtiyaç duyacaktır. Bu da yazılımcının maharetine bakar tabi ki. Eğer siz proje boyunca hazır kompanentler kullanırsanız emin olun projenizin hızı ne sizi ne de bir başkasını tatmin edecektir.

İkinci si ise esneklik. Hazır gelen ve çerçevesi belli olan bir şey üzerin de ne kadar değişiklik yapabilirsiniz ki?

-Bence çok az.

İşte buna benzer sebeblerden ötürü MVC yazmak mantıklı. Çünkü en bastinden textbox ı bile kendimizin yazması gerkmekte. Repeater Datalist vb hiçbirşey yok.

Sonuç olarak Microsoft işi olması gerektiği gibi yapmaya karar verdi. Siz de işi olması gerektiği gibi yapın bence.

Görüşmek Üzere

Osman KURT

Yazılım Uzmanı