Makale Özeti

Makale

Evet. Artık Html helper metotları gibi kullanılabilen bir metodumuz oluşmuştur.

Veri Tabanı Tablolarında Verilerin Gösterilmesi

Yazımızda şu ana kadar View üzerinde yapabileceğimiz temel işlemleri ve kendi istediğimiz doğrultuda HTML yardımcısı oluşturmayı incelemeye çalıştık. Yazımıza veri tabanı işlemleri sonucunda dönen verileri View sayfaları da html yardımcıları kullanılarak nasıl gösterebileceğimizi inceleyerek devam ediyoruz.

Konumuzu örnek üzerinde anlatmaya devam ediyoruz. İlk olarak yapılması gereken bir veri tabanı oluşturmak ve içerisine bir tablo eklemek olacaktır. Yazımızda kullanacağımız veri tabanının adı Sirket, Tablonun adı da Film olacaktır. Tablonun alanları ve tiplerine aşağıdaki resimden erişebilirsiniz.



Veri tabanı ve tabloyu oluşturduğumuza göre artık MVC Framework ile oluşturmuş olduğumuz projemize ekleyebiliriz. Bu işlemi yaparken Ado.Net Entity Framework 1.0 'ı kullanacağız. Projeye ekleyebilmek için Model klasörünün üzerine sağ tıklama yapıp çıkan ekranda Ado.Net Entity Data Model 'i seçerek ekle diyoruz. Sonrasında boş bir model oluşturacağız dedikten sonra veri tabanının ne olacağı gibi bilgileri girerek bir sonrasında modeli uygulamaya eklenmiş oluyor.


Artık film tablosu modele dönüştürüldü ve üzerinde işlem yapılmak üzere hazır durumdadır. Eğer model üzerinde bir işlem yapıyorsanız yapmanız gereken o dosyayı kaydetmek, sonrasında ise projeyi bir kere derlemek olacaktır. Sonrasında kullanılabilir sorunsuzca entity model kabiliyetlerini kullanarak işlemleri yapabiliriz.


Film Controller Oluşturuyoruz

Controller hakkındaki ayrıntılı bilgileri daha önceki yazılarımızda değinmiştik. Şimdi ise hızlıca controller 'ı oluşturup işlemlerimizi yapmaya devam edeceğiz. İlk olarak en başta projeye UrunController.cs sınıfını oluşturuyoruz.



Sonrasında karşımıza geçen ekranda Controller adını belirterek oluştur diyoruz.



Sınıfı oluşturduktan sonra düzenleme yapmaya başlıyoruz. Index() metoduna tablo içerisindeki verileri çekerek işlemi yapıyoruz.

using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
    public class FilmController : Controller
    {
        //
        // GET: /Film/

        public ActionResult Index()
        {
            var entity = new SirketDbEntities();
            return View(entity.FilmlerSet.ToList());
        }
    }
}

Veri tabanına eriştik ve sonuçlar artık view sayfada kullanılmak üzere hazır durumda bizi bekliyor. Şimdi view sayfayı oluşturarak işlemlerimize devam ediyoruz. Otomatik olarak oluşturulması için Index() metodunun üzerinde sağ tıklama yaparak AddView seçeneğini seçiyoruz. Sonrasında karşımıza gelen ekranı aşağıdaki şekline getirerek veri tabanından gelen verileri gösteren view sayfamızı oluşturmuş oluruz.



Otomatil olarak oluşturulan view sayfasındaki kodlar aşağıdaki gibi olmuştur.



<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Filmler>>" %>

   <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
      Index
   </asp:Content>

   <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

   <h2>Index</h2>

   <table>
      <tr>
         <th></th>
         <th>
            Id
         </th>
         <th>
            Film_Adi
         </th>
         <th>
            Yonetmen
         </th>
         <th>
            Cikis_Tarihi
         </th>
      </tr>

      <% foreach (var item in Model) { %>

      <tr>
         <td>
            <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
            <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>
         </td>
         <td>
            <%= Html.Encode(item.Id) %>
         </td>
         <td>
            <%= Html.Encode(item.Film_Adi) %>
         </td>
         <td>
            <%= Html.Encode(item.Yonetmen) %>
         </td>
         <td>
            <%= Html.Encode(String.Format("{0:g}", item.Cikis_Tarihi)) %>
         </td>
      </tr>

      <% } %>

   </table>

   <p>
      <%= Html.ActionLink("Create New", "Create") %>
   </p>

</asp:Content>

Bu işlemler doğrultusunda ekran görüntüsü aşağıdaki biçimde olacak ve isteğimizi karşıladığını görüyor olacağız.



TagBuilder Sınıfını Kullanarak Html Helper Oluşturmak

TagBuilder sınıfını kullanarak resim ve benzeri dosyaları projede gösterebilmemiz mümkündür. Bu işlemleri gerçekleştirirken diğer view sayfalarda da kullanıldığı gibi html yardımcı (HTML Helper) yardımcı kullanılarak gerçekleştirilir.

TagBuilder sınıfınının genel yapısına göz atmak gerekirse,

AddCssClass() = Yeni bir css sınıfı eklenmesine olanak tanır. class=""
GenerateId() = Özniteliklerini ekleyerek id işlenir. Bu metot değişikliklerin periyodik olarak ID bazlı değişiklik olanağı tanır.
MergeAttirbute() = Özniteliklerini ekleyerek id işlenir. Aşırı yüklenmiş metotlar için kullanılmaktadır.
SetInnerText() = İç metin ayarlamak için kullanılır.
ToString() = Daha fazla etiket oluşturulmasına olanak tanımaktadır.

TagBuilder sınıfının dört önemli özellikleri vardır.

Attribute = Temsil edilen tüm etiketlerin özniteliklerini taşır.
IdAttributeDotReplacement = Tekrardan gösterilen etiketlerin GenerateId() metodu kullanılarak değişik periyotlarda işler.
InnerHTML  = Temsil edilen etiketin iç içeriğini sunar.
TagName = Etiketi gösterir.

TagBuilder sınıfı

TagBuilder sınfı aslında gerçek bir kullanılan ana sınıf değildir. StringBuilder sınıfı miraslanarak oluşturulmuş bir sınıftır.


Resim Html Helper Oluşturuyoruz
TagBuilder sınıfının metotlarından GenerateId() ve MergeAttribute() metotlarını kullanarak controller ı oluşturulalım.

using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1.Helpers
{
   public static class ResimHelpers
   {
      public static string Resim(this HtmlHelper helper, string id, string url, string alternateText)
      {
         return Resim(helper, id, url, alternateText, null);
      }

      public static string Resim(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
      {
         // Create tag builder
         var builder = new TagBuilder("img");

         // Create valid id
         builder.GenerateId(id);

         // Add attributes
         builder.MergeAttribute("src", url);
         builder.MergeAttribute("alt", alternateText);
         builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));

         // Render tag
         return builder.ToString(TagRenderMode.SelfClosing);
      }

   }
}

TagBuilder sınıfını kullanarak kendi HTML Helper metodumuzu oluşturuyoruz ve view sayfada kullanılabilir duruma getiriyoruz. Bu noktada yapmamız gereken view sayfada Html.Resim() metodunu kullanmak olacaktır.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1.Helpers" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
   Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
   <h2>Index</h2>
   <%= Html.Encode(ViewData["Mesaj"]) %><br />
   <%= Html.Resim("img1", ResolveUrl("~/Content/editor_turhal.jpg"), "Turhal Temizer")%>
   <%= Html.Resim("img1", ResolveUrl("~/Content/editor_turhal.jpg"), "Turhal Temizer", new {border="4px"})%>
</asp:Content>

İşlemlerimiz sonucunda ekran görüntüsü aşağıdaki gibi olacaktır.



Yazımızda detaylı olarak view kavramına, Html Helper 'a ve kendi HTML helper metotlarımızı oluşturmayı detaylı bir biçimde incelemeye çalıştık. Bir sonraki Asp.Net MVC Framework yazımızda Model kavramını incelemeye çalışacağız.

Herkese mutlu günler diliyorum.

Turhal Temizer
info@turhaltemizer.com
http://turhal.blogspot.com