Bu makalemizde Asp.Net MVC 3’te ViewBag kavramını inceleyeceğiz.
ViewBag, MVC’de Dynamic View Data oluşturmayı sağlamaktadır.
Dynamic View Data Dictionary nedir?
Dynamic View Data Dictionary, Runtime’da (çalışma anında) işleyen ve Controller ile View arasında veri transferini sağlayan yapıdır. Asp.Net’te aspx formumuza server side verileri, code behind’dan (aspx.cs) gönderiyorduk. MVC’de benzer işlemi ViewBag, ViewData vb. yapılarla aktarıyoruz. Öncelikle ViewBag’in nasıl çalıştığını ve kullanıldığını inceleyelim.
Öncelikle HomeController’da Index() methoduna gidelim. ViewBag. yazalım ve çıkan açıklama metnini inceleyelim.
“This operation will be resolved at runtime” : Çalışma zamanında çözümlenecek olan kod bloğudur. Burada istediğimiz türden veriyi Index.aspx formumuza gönderebiliriz. Şimdi bir örnek ile nasıl yapıldığını inceleyelim.
- public ActionResult Index()
- {
- ViewBag.Message = "YazılımDevi.Com!";
- List<string> yazarlar = new List<string>
- {
- "Engin Demiroğ",
- "Veysel Uğur Kızmaz",
- "Salih Demiroğ",
- "Tolga Ayas",
- "Ahmet Sait Duran"
- };
- ViewBag.YazarListesi = yazarlar;
- return View();
- }
List<string> türünden yazar listemizi oluşturup bu listeyi sayfada gösterelim. Bunun için bu değişkenimizi ViewBag ile Index.aspx’e gönderiyoruz.
ViewBag’a YazarListesi özelliği oluşturuyoruz ve yazarlar listemizi bu değişkene atıyoruz. Şimdi Index.aspx sayfamıza gidelim ve YazarListesi’nin değerlerini alt alta ekranda yazalım.
- <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
- <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
- Anasayfa
- </asp:Content>
- <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
- <h2><%: ViewBag.Message %></h2>
- <p>
- <% List<string> yazarlar = ViewBag.YazarListesi;
- foreach (var yazar in yazarlar)
- { %>
- <%:yazar %><br />
- <%}%>
- </p>
- </asp:Content>
Bu örneğimizde YazarListesi’nin türünün belirlenebilmesi için string listesine aktarıp işlemi ondan sonra gerçekleştiriyoruz.
Çalıştırdığımızda ekran çıktısı aşağıdaki gibi olacaktr.
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi