Ahmet Çığşar | ASP.NET MVC ViewBag Nedir?
1256
post-template-default,single,single-post,postid-1256,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

ASP.NET MVC ViewBag Nedir?

ASP.NET MVC ViewBag Nedir?

Bu yazımda bir önceki örneğimiz olan ASP.NET MVC ile İlk Uygulamamız adlı makaledeki örnekle devam edeceğim. Aynı adımları gereksiz yere tekrar etmemek için bunu yapıyorum.

Merak etmeyin uygulamanın kaynak dosyasını aşağıdaki butona tıklayarak indirebilir ve örnek proje dosyasını Visual Studio ile açtıktan sonra  bu sayfadan okumaya devam edebilirsiniz.
[wpdm_file id=4]

Başlıyoruz…

Amacımız, uygulamamızı çalıştırdığımızda sistem saatini alacak ve saate göre bize karşılama mesajı gösterecek. Dolayısıyla ortada dinamik bir durum var yani bizim daha önce belirlediğimiz ve her zaman aynı çıktıyı verecek statik bir durum değil sistemin saatine göre değişecek bir durum var.

Bu örnekte basit bir if yapısı kullanacağım, vay efendim “ikindi saatinde neden iyi akşamlar diyor” veya “niye if kullandın ki” gibi sohbetlere girmek istemiyorum amacım sadece ViewBag’in kullanımını göstermek 🙂

Controller Tarafında Yapacaklarımız

Projemizi açtıktan sonra daha önce oluşturduğumuz ve Controllers klasöründe bulunan HomeController nesnemize çift tıklıyoruz. Index() metodumuzun içerisinde bulunan kodları silip aşağıdaki kodları yazıyoruz.

public ViewResult Index()
{
  //O anki saat bilgisini alıyoruz ve saat değişkenine atıyoruz.
  int saat = DateTime.Now.Hour;
  //saat değişkeni5 ile 11 arası ise
  if (saat > 5 && saat < 11)
    {
     ViewBag.SaatlikDurum = "Günaydınlar";    
    }
  //saat 11'den büyük ve 14'ten küçükse
  else if(saat > 11 && saat <14 )
    {
     ViewBag.SaatlikDurum = "Ne çabuk öğlen olmuş";
    }
  //saat yukarıdakiler haricinde bir değerse akşamdır diyoruz
  else
    {
     ViewBag.SaatlikDurum = "Aaa akşam olmuş";
     }
  //Geriye View() dönderecek.
     return View();
}

Yukarıda oldukça basit bir C# (Csharp) if yapısı kullandık. Kodların açıklamaları satırlarda kısaca yazmaya çalıştım. Peki burada bahsi geçen ViewBag nedir, ne iş yapar birazdan inceleyeceğiz.

View Tarafında Yapacaklarımız

Yine daha önceki örneğimizde oluşturduğumuz ve projemizin View klasöründe bulunan Home dizini altındaki Index.cshtml dosyamıza çift tıklayıp açıyoruz ve <body> etiketinin altında bulunan <div> etiketi içerisine @ ile başlayan aşağıdaki kodu  yazıyoruz.

<body>
    <div>
        @ViewBag.SaatlikDurum
    </div>
</body>

Burada yani View tarafında @ViewBag.SaatlikDurum ile Controller tarafında belirlediğimiz @ViewBag.Saatlikdurum bilgisini çalışma anında dinamik olarak View tarafına aktardık ve bunu Razor View Engine’ın kod dizimi kuralları gereği @ koyarak, görüntülenmesini istediğimiz yerin HTML etiketleri arasına ilgili ViewBag’imizi çağırdık.

Projemizi Debug > Start Debugging… (F5) ile çalıştırdığımızda bulunduğunuz anın saatine göre  bize karşılama mesajı gösterecektir.

ViewBag Nedir?

ViewBag klişe tanımıyla:  Çalışma anında Controller ile View bölümleri arasında veri alışverişleri sağlar.
Aşağıdaki ekran görüntüsünde örneğimizde kullandığımız bir kod parçacığı görünmekte.  Visual Studio bize burada güzel bir bilgi veriyor : Parantez içerisinde (dynamic expression) ve altında  “This operation will be resolved at runtime” yazıyor yani (dinamik bir ifade) ve “Bu işlem çalışma anında çözümlenecektir” diyor ve her şeyi açıklıyor.

viewbag_runtime

ViewBag Nasıl Tanımlanır?

ViewBag tanımlarken ViewBag.BenBirVewBagim şeklinde tanımlarız.
ViewBag BenBirVewBagim  = new ViewBag(); gibi bir durum söz konusu olamaz çünkü ViewBag, ViewPage class’ı altında tanımlı bir Property’dir yani bir özelliktir bir tip değildir. Bunu soran  bir kişi oldu ki bu uyarıyı yapmam için yeterli bir sayı.  Sizde böyle bir şey denemeye kalkarsanız derleyici size “Adamım bu bir property, senin derdin ne hea?” dercesine bir hata verecektir.

Başka bir yazıda görüşmek üzere…

 

37 Yorum Var
  • BirkanAYDIN
    09:55h, 26 Mayıs Cevapla

    Hey adamım, neredeyse bir ay olmak üzere konun devamı gelmedi… Senin derdin ne hea ? 🙂 Şaka bir yana gerçekten çok güzel bir yazı dizisine başlamışsınız. Ctrl + D yaptım bile.. Yazılarınızın devamını dört gözle beklemekteyim 🙂

    İyi Çalışmalar.

    • Ahmet Çığşar
      17:58h, 26 Mayıs Cevapla

      Hahaha…. Teşekkür ediyorum bu eğlenceli yorum için. Malum gündelik hayat fazla koşturmaca var bu aralar fakat 4 hazirandan sonra oldukça seri MVC ve WPF makalelerim gelecek 🙂

      • Mualla
        13:08h, 21 Kasım

        sitenizi yeni keşfettim ve gerçekten çok beğendim. son yorumlarınızda 4 haziran 2013 den sonra makalelernizi paylaşacağınızı söylemişsiniz ancak şu yıl 2014 ve aylardan kasım:) yani 1.5 yıl geçmiş bile. artık yazmayacak mısnız 🙁

      • Ahmet Çığşar
        13:23h, 21 Kasım

        Bu konuda pek umutlu değilim. Artık teknik makale yazmak için enerjimi toplayamıyorum birgün motive olursam tekrar yazabilirim. Siz yine de bana güvenmeyin 🙂

  • Recep YAVUZ
    18:46h, 29 Mayıs Cevapla

    Müthiş. Tek kelimeyle müthiş anlatım. Diğer makalelere de bakan biri olarak MVC yi 2 saat önce hiç bilmeyen biri olarak öyle kafam karıştı ki şimdi. Devamlı sorguluyorum. Yani aslında yararlı bir kafa karıştırma makalesi oldu. Tam “amannn bu sistemi anlamak zor tam da asp.net e odaklanmışken” derken sizin makalelere daldım. Okudukça okuyası geliyor insanın. Daha da karıştırası kafayı…

    Acaba bu sistemle yapılan site varmıdır şuanda?
    Acaba bu sistem kaç yıldan beri gerçek anlamda kullanılıyor?

    Ayrıca derliyoruz sayfa yok üstad. CSHTML mi sayfa? Yani derlenen sayfanın uzantısı bu mu? Server a FTP yaparken bunu nasıl atacaz sunucu bilgisayara vb.. gibi o kadar çok soru sormak istiyorum ki… Ama eminim 10 dakika içerisinde sıkılırsınız sorularım. Tekrar tekrar teşekkürler 🙂

    • Ahmet Çığşar
      10:35h, 31 Mayıs Cevapla

      Selamlar,
      Kafa karışıklığı iyidir emin olun 🙂 MVC öğrenmeye başlamadan önce benzer soruları ve çekimserlikleri bende yaşadım ama MVC’nin esnekliğini, büyük projelerde hakimiyeti kaybetmemenizi sağlaması ve temiz kod imkanını gördükten sonra vazgeçemedim. Bu sistemde yapılan inanılmaz sayıda çok site var tabi. Turkcell, Yapıkredi, Akbank, İş Bankası bunlara en güzel örnek. Tabi sıradan firmalara yapılan sitelerde mevcut burada dikkatini bu sitelerin .aspx ile biten uzantıları olabilir bu tamamen ViewEngine dediğimiz bir olay ileriki aşamalarda anlatmaya çalışacağım. MVC 2007’de duyuruldu ama yaygınlaşması 2008 ortalarında oldu ve giderek web dünyasına hakim olmaya başlıyor. Dosyaları görememe olayına gelince MVC’de bazı sayfalar fiziksel olarak yer almaz Asp.Net formları gibi server render ederken oluşur ve nasıl kullanacağını bilir server. 4 Hazirandan sonra yeni MVC makalelerinde yavaş yavaş değineceğim.

  • Oğuz Kağan
    12:42h, 08 Haziran Cevapla

    Asp.Net’i öğrenmeye başlayayım demiştim birde baktım mvc diye bir şey var dedim bu daha gelişmiş fakat ortalıkta tek bir tane anlatım yok şimdi sizin makalelerinizle öğrenebilirim inşallah 🙂 Bende kendimi geliştirip videolu derslere başlamayı düşünüyorum. Size kolay gelsin sonraki makalenizi bekliyorum sabırsızlıkla … 🙂

  • Kaan
    11:09h, 25 Haziran Cevapla

    Dostum yazı dizisine devam etsen artık 🙂 açız bilgiye çok fena..

  • Alper
    16:35h, 09 Temmuz Cevapla

    coming soon

  • uğur
    10:55h, 15 Temmuz Cevapla

    Hocam bekliyoruz makaleleri 🙂

  • Mustafa Demiralp
    21:48h, 18 Temmuz Cevapla

    temmuz oldu hala yeni makale yazacaksın tamam tamam diyorsun temmuzda bitti lütfen mvc serisine devam eder misin??? yeter ama o kadar insan yorum yazmış hala yazmıyorsun bildiklerini paylaşmaktan mı korkuyorsun??? gösterip vermem mi diyorsun yani??? nedir olay arakdaşım?

    • Ahmet Çığşar
      23:30h, 20 Temmuz Cevapla

      Mustafa, malum tanımıyorum seni ama isyanını anlamaya çalışıyorum. Yazılarımı takip ettiğin ve makalelerimi benimsediğin için böyle bir yorum yazdığını düşünüyorum.

    • Halil İbrahim
      23:31h, 20 Temmuz Cevapla

      Mustafa bey niye kendinizi bu kadar nimetten saydınız anlayamadım. Burada karşılıksız paylaşım yapan birisi niye bu kadar mecbur olsun bir şeyler yazmaya. İşleri yoğundur, yazıyı ertelemiştir vs. olamaz mı? biraz daha anlayış lütfen 🙂

  • Emre
    12:48h, 06 Eylül Cevapla

    Karmakarışık anlatılmış bir sürü MVC makalesi okudum… Yok arkadaş demek ki MVC’yi anlayacak altyapım yok demiştim ama bugün bu siteye rastladım. Bir defa başlangıçta Project Template olarak Empty seçmeniz benim için makaleyi o kadar anlaşılır yaptı ki! Meğer gayet de anlaşılabilir bi’şeymiş Asp.net MVC :))
    Çalışmalarınızın devamını ilgiyle bekliyoruz Ahmet Bey… 🙂

  • xxx
    22:29h, 09 Eylül Cevapla

    Merhaba,

    Siteni şansa bugün gördüm. mvc ile yazdıklarını okudum. Anlatım tarzın gerçekten mükemmelmiş. Görsel video çekmek senin için daha kolay olabilir . Bunu bir düşünmelisin. Karşılıksız yardımların için okuyucular adına teşekkür ederim. Hiç Hata vermeyen kodlar yazman dileğiyle :))

  • Samet
    15:04h, 26 Mart Cevapla

    Bilgilerinizi bizimle paylaştığınız için teşekkürler. Yazılarınızın devamını bekliyoruz. (:

  • Gökhan
    16:51h, 30 Haziran Cevapla

    Güzel ve oldukça anlaşılır biçimde anlatmışsınız, teşekkürler. Devamını bekliyoruz

  • Mustafa İKİLİ
    21:26h, 25 Ağustos Cevapla

    Öğrenmek için çok emek verdiğiniz bilgilerinizi bizimle paylaştığınız için çok teşekkürler Ahmet bey. Aynı zamanda çok anlaşılır bir dille anlatmışsınız ki sanırım 3 yazınızı okudum ve anlattıklarınızdan güzel şeyler öğrendim tekrar teşekkürler…

  • İbrahim
    13:30h, 10 Eylül Cevapla

    Üstad, makalelerini geç görmüş biri olarak şunu söylemek istiyorum; bu makalelerin devamına o kadar çok ihtiyacım var ki şuan, anlatamam.. Çok güzel anlatmışsın, çok faydalı olmuş, şöyleymiş, buymuş bla bla.. gibi klişe sözler hiç sarf etmeyeceğim. Çünkü böyle karmaşık bir yapıyı, bu kadar basit bir biçimde ama muazzam bir şekilde etkili ve kalıcı anlatma tarzına hakaret olur o klişe sözler.

    • Ahmet Çığşar
      09:40h, 15 Eylül Cevapla

      Motive edici yorum için teşekkürler.
      Junior zamanlarımda üstad bir yazılımcı abimin şu sözünü unutmam “bu işten para kazanmaya başladığında makale yazmak ve yeni teknik kitaplar okumak lüks olacak” aynen öyle durum özellikle bu aralar. Koşturmacadan makale yazamaz oldum. Şu gün bugün yazarım da demiyorum artık malum yazamıyorum mahçup oluyorum.

  • Barış
    01:49h, 16 Ekim Cevapla

    Hocam şu saatlikdurum nereden geldi acaba. Teşekkürler

  • Bilgi Küflü
    11:10h, 17 Ocak Cevapla

    Açıklayıcı makle için teşekkürler.

    else if(saat > 11 && saat = 11 && saat < 14)

    ile değiştirmenizi öneririm. Bu haliyle saat 11'de "Aaa akşam olmuş" mesajı alırsınız.

  • Murat
    20:56h, 09 Nisan Cevapla

    O değilde MVC kaynakları açısından “tam 10 numara bir kaynağa rastladım” derken son MVC makalenin bu olduğunu gördüm.
    Özgün anlatamın var fakat burada bitmemeliydi…

    • Ahmet Çığşar
      14:29h, 10 Nisan Cevapla

      Teşekkürler Murat, maalesef mesleği bıraktım. Ben de isterdim devamını getirmeyi ama motive olamadım

  • yasin
    11:13h, 01 Temmuz Cevapla

    tam yeni başladım,güzel bir kaynak buldum derken…

  • ezgi
    16:01h, 17 Ağustos Cevapla

    gurban oluyum bırakma devamını getir seni bekliyoruz 🙂

  • karacahatice
    15:25h, 04 Eylül Cevapla

    bir yazılımcı mesleği bırakıp da ne iş yapar merak ettim 🙂

    • Ahmet Çığşar
      11:19h, 05 Eylül Cevapla

      Yazılımcı değilde insan olarak düşünüldüğünde çok iş var 🙂 Diğer insanlar ne iş yapıyorsa. Ben dış ticaret ve e-Ticareti seçtim gayet mutluyum 🙂 Tabi bunun için öncesinde ticari hayata, girişimciliğe meraklı olmak kendini bu alanlarda biraz olsun açık hale getirmek gerekiyor

  • Hilmi Aydın
    20:48h, 06 Eylül Cevapla

    Yorumların hepsine baktım, insanlar neden devamı yok diye dert yanıyor 🙂 bu biraz da armut pis ağzıma duş durumu gibi. Biraz araştırma, öğrenme isteği, merak ile su zamnda bir çok kaynaktan bilgi edinebilme mümkün. Ahmet bey çok güzel bir anlatıma imza atmış, ipin ucunu anlaşılır bir şekilde göstermiş. Teşekkür ederim.

  • Nezir
    16:43h, 03 Ocak Cevapla

    MVC yi öğrenmek için kaynak arıyordum yorumlarda yazıldığı gibi internette bir çok yerde bilgi çöplüğü mevcut.Şu 3 derslik anlatımınızı bile saçma sapan kaynaklardan anlatımlarla öğrenmeyi başarmışken sizin sitenizle karşılaştım.Hah dedim yani sonunda adam gibi MVC yi anlatan bir kaynak buldum keşke daha önce görseydim diye.Tam sevinmiştim şu bildiğim konuları geçeyim dedim Ama bir bakmışım ki ders sonuna gelmişim asıl MVC derin konularının başlayacağı noktada derslerinize son vermişsiniz şansıma tüküreyim dedim 🙂 Keşke derslerinize devam edebilseydiniz.Evet para kazanamazdınız belki ama en azından bizden bir hayır duası alırdınız 🙂 Neyse çalışmalarınızda ve işinizde başarılar kolay gelsin .Ben çöpleri karıştırmaya devam edeyim 🙂

    • Ahmet Çığşar
      22:35h, 04 Ocak Cevapla

      Yorum için teşekkürler. Maalesef artık teknik yazılar yazacak gücü göremiyorum kendimde zaten mesleği de bıraktım 🙂 İngilizce seviyen yeterliyse yerli kaynaklarla hiç uğraşma yoksa İngilizce’yi çözmeye çalış aksi halde hiçbir alanda Türkçe kaynaklar yeterli değil.

  • OSMAN
    17:41h, 03 Mart Cevapla

    Merhaba Üstad…
    Gerçekten mükemmel ve sade anlaşılır bir anlatım tarzın var. Anlaşılan makalelerin devamı gelmeyecek. En azından geçmişte yazmış olduğunuz MVC projelerinden bizimle paylaşabilir misiniz ? Teşekkürler…

    • Ahmet Çığşar
      22:25h, 03 Mart Cevapla

      Osman merhaba, teşekkürler yorumun için. Mesleği bırakalı uzun zaman oldu. İşletim sisteminden tut her şeyim değişti artık IDE bile kurulu değil bilgisayarımda eski harddiskleri bi karıştırmam lazım bakalım.

  • ali
    17:25h, 09 Mart Cevapla

    500000 elemanlı bir list in içinde 1000 tane nesne olduğunu düşünelim. bunu viewbag.dizi ye attık diyelim bu hep orada kalacak mı? bakınca beni bile içine alır gibi. viewbag in ömrü yokmu. o sayfadan çıkınca viewbag da otomatik silinecek mi. Global bir değişken gibi kullanabilir miyiz? 5 6 tane sayfa dolaşsak viewbag kalacakmı session gibi? Teşekkürler.

  • Selin
    10:40h, 07 Nisan Cevapla

    mesleği bırakıp ticareti atılan bir kişi daha 🙂 Acaba ben de bu kategoriye dahil olabilecek miyim 😀 Püf noktalarını çok güzel belirtmişsiniz. Teşekkürler anlatımınız için…

Yorum Yapın