Makale Özeti

Makale

Basit merhaba dünya örneğimiz dışında veri tabanında alınan verileri view sayfasında da göstermek istediğimiz ViewData ve Html.Encoding() kullanılması mümkündür.

Harici HTML Helper (Yardımcı HTML) Kullanımı
MVC uygulamalarında View sayfalarında gösterilen sayfa içeriğinin HTML Helper (yardımcı HTML) yardımıyla gösterildiğini görmüş ve geçmiş örneklerimizde bunları detaylı bir biçimde incelemiştik. Normalde alışık olduğumuz <form> elementinin yerine Html.BeginForm() özelliği kullanılmaktadır. HTML elementlerinin en sık kullanıldığı zamanlarda <input> ve <img> en çok tercih edilen elementlerdi. Zaman geçtikçe bunların yerini Asp.Net kontrolleri almıştır. Fakat Asp.Net kontrolleri de arka planda derlendiğinde <input> olduğu gözlenmiştir. Bu sebepten bizlere HTML Helper kütüphanesi hazırlanmış ve kullanımımıza sunulmuştur. Tekrardan kullanabileceğimiz en temel HTML Helper metotlarına göz atmak gerekirse;

•Html.ActionLink()
•Html.BeginForm()
•Html.CheckBox()
•Html.DropDownList()
•Html.EndForm()
•Html.Hidden()
•Html.ListBox()
•Html.Password()
•Html.RadioButton()
•Html.TextArea()
•Html.TextBox()
şeklinde sıralayabilmemiz mümkündür.

Not: View sayfalar kullanılan elementlerine HTML Helper 'ı çözümlerken <%= %> kullanımı ile <% %> birbirlerine eş değildirler. İkinci şekilde kullanmak istediğimizde uygulama hata verecek ve çalışmayacaktır.

HTML Helper ile Statik Metot Oluşturma

Basit olarak HTML Helper da kullanılmak üzere yeni bir statik metodu nasıl oluşturabileceğimize değineceğiz. Yapacağımız örnekte view sayfaya eklenecek kontrolde sabit değeri ve kullanıcının göreceği metin olacaktır.

Helpers\LabelHelper.cs
namespace MvcApplication1.Helpers
{
    public class LabelHelper
    {
        public static string Label(string target, string text)
        {
             return string.Format("<label for='{0}'>'{1}'</label>", target, text);
        }
    }
}

Geri dönüş değeri string olan statik bir metot hazırladık. Artık bizimde bir HTML Helper metodumuz vardır. Şimdi bunu View sayfada nasıl kullanacağımızı açıklamaya çalışalım. İlk olarak yapmamız gereken sayfaya Helpers alanını göstermemiz gerekmektedir. Bu işlemi <%@ imports %> ile yapacağız. Sonrasında ise <%= %> içerisine LabelHelper.Label  'ı kullanarak istediğimiz sonucu alabiliriz. Şimdi yazı olarak anlattıklarımızı uygulamalı olarak nasıl yapacağımıza değinmeye çalışalım.



<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1.Helpers" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
   Home Page
</asp:Content>

   <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
   <p>
   <div>
      <%using(Html.BeginForm())
      {%>

         <%=LabelHelper.Label("firstName", "First Name:") %>
         <br />
         <%=Html.TextBox("firstName")%>
         <br /><br />
         <label for="Password">Password</label>
         <br />
         <%=Html.Password("Password")%>
         <br /><br />

         <input type="submit" value="Giris" />

      <%}%>
   </div>
   </p>
</asp:Content>

View sayfamızda istediğimiz değerler sorunsuzca görülmektedir.



Artık kendimize ait bir HTML Helper sınıfımızı vardır. Fakat biz bu metotları kullanmak istediğimizde hangi sınıf adıydı diye hatırlamamız gerekecektir. En iyi yöntem Html Helper metotlarını extension lar yardımı ile kullanılmasına olanak tanımak olacaktır.

HTML Helper Uzantılı(Extension) Metotlar Oluşturmak

HTML Helper ile çalışırken MVC Framework bünyesinde oluşturulmuş olan metotları kullanarak view sayfalarımızın içeriklerini oluştururuz. Bu yöntem standart HTML elementlerinden yararlanılarak oluşturulmuş metotları projelerimizde Html Helper olarak kullanabilmemize olanak tanımaktadır. Şimdi biz örneğimizde HTML helper sınıfına ek bir metot ekleyerek html. koyduğumuzda bizim hazırladığımız metodunda kullanılmasını nasıl olacağını incelemeye çalışacağız.

Helpers\LabelExtensions.cs
using System;
using System.Web.Mvc;

namespace MvcApplication1.Helpers
{
    public static class LabelExtensions
    {
        public static string Label(this HtmlHelper helper, string target, string text)
        {
            return String.Format("<label for='{0}'>{1}</label>", target, text);
        }
    }
}

Visual Studio üzerinde intellisense i kullandığımızda view sayfada html helper için extension olduğuna bize belirtmektedir.



Yaptığımız değişikliğe göre index.aspx sayfamızı güncellersek sonuç aşağıdaki gibi olacaktır.
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1.Helpers" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
   Home Page
</asp:Content>

   <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
   <p>
   <div>
      <%using(Html.BeginForm())
      {%>

         <%=Html.Label("firstName", "First Name:") %>
         <br />
         <%=Html.TextBox("firstName")%>
         <br /><br />
         <label for="Password">Password</label>
         <br />
         <%=Html.Password("Password")%>
         <br /><br />

         <input type="submit" value="Giris" />

      <%}%>
   </div>
   </p>
</asp:Content>

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

Herkese mutlu günler diliyorum.

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