ASP.NET MVC 3’de ViewBag özelliği

ASP.NET MVC geliştiricileri, daha önceki sürümlerden itibaren anahtar-değer şeklinde Controller dosyalarından, View dosyalarına veri aktarabilmek için bize ViewData özelliğini sunuyordu. Bu özelliği şu şekilde hala kullanabiliyoruz:

ViewData["Mesaj"] = "Bu bir mesajdır."; // Atama yapmak için.
@ViewData["Mesaj"] // Veriyi çekmek için.

Ama MVC 3’de, daha da kullanışlı hale getirmek isteyen geliştiriciler, şöyle bir boyut kazandırdılar:

ViewBag.Mesaj = "Bu bir mesajdır.";
@ViewBag.Mesaj // Veriyi çekmek için.

Viewbag dynamic tipinde bir özelliktir(Intellisense desteği dynamic tiplerde desteklenmiyor).Yani her sınıftan bilgiyi saklayabiliriz.ViewBag özelliğini, bir sınıfın özelliğine atama yapar ve değerini çeker gibi kullanabiliyoruz.

 

Örnek:

Yeni bir MVC 3 projesi oluşturuyoruz.

HomeController.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{    

    public class Kisi
    {        

    public string Ad { get; set; }

    }

    public class HomeController : Controller
    {        

            public ActionResult Index()
        {            

            ViewData["Kisi"] = new Kisi() { Ad = "Yusuf Doru" };

                        return View();
        }
    }
}

Kisi isimli bir sınıfımız var.Index action metodumuzdaki ViewData[“Kisi”] içine yeni bir Kişi sınıfı türettik. View dosyamıza dönüyoruz.

Index.cshtml:

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index/h2>
<h2>Sonuç:</h2>

@ViewData["Kisi"].Ad

Gördüğünüz gibi “@ViewData[“Kisi”].Ad” diyerek çekince hata alıyoruz. Peki bunu nasıl kolaylıkla çekebiliriz? BirdeViewBag ile deneyelim.

Index.cshtml:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index/h2>
<h2>Sonuç:</h2>

@ViewBag.Kisi.Ad

Üstte gördüğünüz gibi @ViewBag.Kisi.Ad diyerek “Ad” özelliğimizi başarıyla çektik.
Şunu bilmemiz gerekir ki: ViewData ile özellik atarsak, bunu ViewBag ile de kullanabiliriz. Aynı yöntem ViewDataiçin de geçerli.
Yani:

ViewData["Mesaj"] = "Bu bir mesajdır";
@ViewBag.Mesaj // çıktı: "Bu bir mesajdır"

Bu yazımızda ViewBag özelliğini ve kolaylığını öğrenmiş olduk.

Yayınlayan

Yusuf Doru

İstanbul'da yaşıyor. Web ve masaüstü ortamlarında çalışmalar yapıyor. Araştırıyor, geliştiriyor. Kendine ait kişisel blogu var. Her ne kadar .NET dillerine ilgisi olsa da, açık kaynaklı programlama dillerinde de kendini geliştirmeye devam ediyor.

“ASP.NET MVC 3’de ViewBag özelliği” üzerine 4 yorum

  1. Merhaba
    MVC ile geliştirmeye calıstıgım uygulamada controller dan aldgm degeri yukarıdaki ornekteki gibi viewda goruntulemek istiyorum ama goruntuleyemiyorum,
    Sebep ne olabilir acaba fikriniz var mı viewbag degeri alıyor ama view da goruntulenmiyor bu deger.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir