nedirtv?com - Ankara Seminerleri

nedirtv?com, 3. yıldönümü etkinliklerine devam ediyor. 3 Mayıs 2009 Pazar günü Ankara Bilkent Üniversitesi’nde değerli Ankaralılarla beraber olacağız. INETA Türkiye ve Bilkent ACM Student Chapter desteğiyle gerçekleştireceğimiz bu tüm günlük etkinliğe tüm Ankaralı yazılımcıları bekliyoruz.

Not: Seminerlere katılım ücretsizdir.

Seminer Programı:
09:30 Açılış – nedirtv?com Tanıtımı
09:45 ASP.NET MVC (Uğur Umutluoğlu)
11:30 What is SharePoint? (Burak Batur)

13:00 Ara

14:00 WCF 4.0 & WF 4.0 (Burak Selim Şenyurt)
15:30 WPF ve Multitouch Development (Daron Yöndem)
17:00 Bitiş


Zaman:
3 Mayıs 2009 Pazar

Yer:
Merkez Kampüs Rektörlük Binası Mithat Çoruh Amfi Salonu, Bilkent Üniversitesi - ANKARA

27 Nisan 2009 Pazartesi 23:43

Yorum - RSSYorumlar (2)

Kategori: Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET’te SEO Uyumlu Sayfa Yönlendirme

SEO(Search Engine Optimization) yani arama motoru iyileştirmesi son yıllarda internet dünyasında tanınmak ve para kazanmak isteyen çoğu kişinin ağzından düşürmediği bir kavram. Arama motorlarında üst sıralara çıkmak, adsense reklamlarından iyi gelirler elde etmek başlı başına bir sektör haline bile geldi! Hatta sırf bu işten ayda 1.000$’ın üzerinde gelir elde eden tanıdıklarım bile var(İmreniyorum sizlere arkadaşlar). Geçtiğimiz haftalarda Ineta Next Hit’teki ASP.NET 4.0 sunumuma hazırlanırken sayfa yönlendirme ile ilgili ASP.NET uygulamalarına has güzel bir ipucu keşfettim. Aslında Response.Redirect() metodunun tarayıcılara(web browser) HTTP 302 durum kodunu gönderdiğini ASP.NET’le ilk tanıştığım zamanlarda bile biliyordum, ama bu metotla beraber tarayıcıya nasıl HTTP 301 durum kodu göndeririz ve arama motorları tarafından nasıl daha fazla seviliriz, işte bu idi yeni keşfettiğim nokta:)

Response.Redirect programatik olarak sayfa yönlendirme işlemleri yapmamızı sağlıyor bildiğiniz gibi, ancak ilginç bir ayrıntısı da var, o an talepte bulunan istemciye HTTP 302(yani Temporary Redirect) bilgisini gönderiyor. Tabi ki bu mesajı gören arama motoru boot’ları da; “demek ki bu sayfaya geçici olarak geldim, yakında bu sayfayı belki de bulamayacağım, önemsiz bir sayfa, gerilere at!” der. Halbuki işin aslı bu kalıcı bir sayfa ve arama motorlarının da bunu böyle bilmesi gerekir. Eğer gönderilen cevabın içeriğine HTTP 301(Moved Permanently) bilgisini ekletebilirsek süper olacak. Aşağıda bu işi nasıl yapabileceğimizi görebilirsiniz. Tabi ki Response.Redirect() kullanmadan;


Response.StatusCode = 301;

Response.StatusDescription = "Moved Permanently";

Response.AddHeader("Location", "Default2.aspx");


Yukarıdaki üç satırı beğenmeyen varsa güzel bir haber vereyim; ASP.NET 4.0 ile gelecek olan Response.RedirectPermanent() metodu bu üç satırın işini görecek. Yani bu metot yönlendirmeyi yaparak istemciye HTTP 301 durum kodu gönderecek. Küçük ama hoş bir yenilik olacağa benziyor.

25 Nisan 2009 Cumartesi 20:44

Yorum - RSSYorumlar (10)

Etiket: , ,
Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET MVC - Kendi HTML Helper Metotlarımızla Çalışmak

Bu yazımıda kendi özel HTML Helper metotlarımızı nasıl oluşturup-kullanabileceğimize göz atacağız. HTML Helper metotları View nesneleri içerisinden Html adındaki bir nesne üzerinden çağrılabilen metotlardır. Örneğin <%=Html.TextBox("txtIsim", "Adınızı girin...") %> şeklindeki bir metot çağrımı sayfamızda txtIsim adında bir metin kutusu (text input elemanı) oluşturulmasını ve içerisinde Adınızı girin... metninin eklenmesini sağlar. Bu işlemi aslında biz de manuel html elementleri yazarak oluşturabiliriz, ancak bu kontrollerin içeriklerini dinamik şekilde oluşturmak için HTML Helper metotları işlerimizi basitleştirecektir. Bu doğrultuda eğer kendi yardımcı HTML metotlarımızı geliştirecek olursak farklı farklı projelerde kullanma ve geliştirme sürecini kısaltma şansımız da olacaktır.

Aslında burada oluşturacağımız metot neredeyse her projede yazdığımız tarzda sıradan bir metot olacaktır(1-2 ayrıntı dışında). Basit olarak geriye HTML kodları döndüren bir metot oluşturmak, aslında görevimiz bu! Tabi ki WebForm'larda bu tarz ihtiyaçlarımız olmadığı için biraz bu tip metotları yazmaya uzak kaldığımızı söyleyebiliriz. Bir de oluşturulması oldukça karmaşık olan veri kontrollerinin HTML çıktılarını ayarlamak, gerekli iş mantığını bu metotlar içerisinde kodlamak oldukça zahmetli bir işlem olacaktır. Biz yazımızda öncelikli olarak basit bir HTML helper metodunu nasıl oluşturabileceğimizi, ardından da veri saklayan bir nesneyi html table elementi olarak çıktıya nasıl dönüştürebileceğimizi göreceğiz.

HTML helper metotlarını doğrudan kendi yazdığımız özel bir sınıf içerisinde oluşturabiliriz. Burada nesneyi örnekleme ihtiyacımız olmayacağı için static bir metot oluşturmak daha doğru bir pratik olacaktır. Aşağıda html span elementi oluşturan bir yardımcı html metodu yer alıyor. Projemize HtmlHelperKutuphanem.cs adında bir class dosyası ekliyoruz.

HtmlHelperKutuphanem.cs

public class HtmlHelperKutuphanem

{

    public static string Metin(string text, string renk)

    {

        return string.Format("<span style=\"color:{0}\">{1}</span>", renk, text);

    }

}

Görüldüğü gibi son derece basit bir metot. Kendisine gönderilen text parametresinin içeriğini, renk parametresinde belirtilen renk kodu ile bir span elementi içerisinde görüntüleyecektir. Metodu View nesnelerimizden çağırma işlemi de aşağıda görüldüğü gibi olacaktır.

Views/Home/Index.aspx

<%=HtmlHelperKutuphanem.Metin("Merhaba Dünya", "#FF0000") %>

Sayfanın çıktısına baktığımızda ise;

<span style="color:#FF0000">Merhaba Dünya</span>

şeklinde olacağını göreceğiz. Bunu zaten bizde normal HTML kodlarını yazarak yapabiliriz dediğinizi duyar gibiyim, ama işin şu kısmını unutmamak lazım; kod içerisinde dinamik işlem yapmak istediğiniz durumlarda for-foreach gibi döngülerin içinde HTML kodunu string olarak yazmaktansa, bir programlama öğesi olan metotları kullanmak daha hızlı, daha basit ve  etkili olacaktır. Dikkat ettiyseniz burada yazdığımız yardımcı HTML metodumuz kendi özel class'ımız içerisinde olduğu için, metodu çağırırken de bu class adını kullanmak zorunda kaldık. Ancak ASP.NET MVC'deki tüm HTML Helper metotlara Html adındaki bir özellik(property) üzerinden erişilebilir. Bu özellik aslında o anki context üzerinden HtmlHelper tipinden bir nesne döndürmektedir.  O zaman yazacağımız özel metotlarımızı HtmlHelper class'ının  bir üyesi olarak getirmek işi standartlaştırmak adına faydalı olacaktır. Aşağıdaki kod parçasında az önce yazdığımız Metin adındaki metodun nasıl HtmlHelper class'ına uzantı bir metot olarak eklendiği görülmektedir. İşte extension metotların kullanımına süper bir örnek :)

HtmlHelperExtensions.cs

using System.Web.Mvc;

 

public static class HtmlHelperExtensions

{

    public static string Metin(this HtmlHelper htmlHelper, string text, string renk)

    {

        return string.Format("<span style=\"color:{0}\">{1}</span>", renk, text);

    }

}

Böylece artık Html özelliği üzerinden Metin adındaki yardımcı HTML metodumuzu çağırabileceğiz.
Basit bir HTML Helper

Bu basit metotla nasıl kendi HTML Helper metotlarımızı oluşturup kullanabileceğimizi gördük. Peki biraz daha karmaşık yapısı olan bir HTML çıktıları nasıl oluşturabiliriz? Aklımız hemen WebForm'lardaki GridView vb. kontrollerde olduğu gibi HTML çıktıları oluşturmaya gidiyor olabilir ama bu o kadar da kolay olmayacaktır. O zaman bizde elimizde bulunan bir liste koleksiyonun içeriğini table elementi olarak oluşturan bir yardımcı metodu nasıl oluşturabileceğimize bakalım. Dilerseniz ilk olarak basit bir table oluşturmayı deneyip, ardından daha karmaşık yapıdaki nesneleri nasıl table içerisinde listeletebiliriz bunun yollarını arayalım. İlk senaryomuz string dizisi içerisinde saklanan bilgileri tek hücreli bir tabloya yazdırmak olsun. Aşağıda bu işlemi gerçekleştiren SimpleTable adındaki extension method'umuz yer almaktadır.

HtmlHelperExtensions.cs

using System.Web.Mvc;

using System.Text;

 

public static class HtmlHelperExtensions

{

    public static string Metin(this HtmlHelper htmlHelper, string text, string renk)

    {

        return string.Format("<span style=\"color:{0}\">{1}</span>", renk, text);

    }

 

    public static string SimpleTable(this HtmlHelper htmlHelper, string[] list)

    {

        StringBuilder tablo = new StringBuilder();

        tablo.AppendLine("<table>");

 

        //Dizi içerisindeki tüm elemanları tek tek okuyarak bir satır ve sütun olarak oluşturuyoruz

        foreach (string item in list)

        {

            tablo.Append("<tr><td>");

            tablo.Append(item);

            tablo.AppendLine("</td></tr>");

        }

        tablo.Append("</table>");

 

        return tablo.ToString();//Oluşan HTML kodları geri döndürüyoruz

    }

}

SimpleTable metodu çok basit bir şekilde kendisine gönderilen list adındaki string dizisi içerisindeki elemanları bir döngü içerisinde tek tek okuyarak tabloya eklenen satır ve hücreler içerisine ekliyor. Oluşan tablonun HTML kodlarını da geriye döndürüyor. İş mantığı normal uygulamalarda yazdığımız gibi, olayın sadeliği ise bu metodu artık Html nesnesi üzerinden tekrar tekrar farklı View nesneleri içerisinde kullanabilmemizden geliyor.

Peki HTML çıktıyı biraz daha karmaşık hale getirelim. Senaryomuz şu olsun; elimizde içerisinde aynı tipten nesneler saklayan generic bir liste koleksiyonumuz olsun, ve biz de bu koleksiyondaki tüm nesnelerin özelliklerini table elementi içerisine birer hücre olarak yazdıralım. Örneğin kendi oluşturduğumuz Product tipindeki nesneleri saklayan generic List koleksiyonumuzun içeriğindeki tüm ürünleri ve ürünlerin detaylarını(yani property değerlerini) tablo içerisinde görüntülemek istiyoruz. Tahmin edeceğiniz üzere oluşturacağımız metot Product gibi bir tipe bağımlı kalmayacak, bazen Customer, bazen Order gibi farklı nesneleri de görüntülemek isteyecektir. Bu doğrultuda metodun içerisinde çalışma zamanında(runtime) liste içerisindeki tipin yapısını çözümlemek ve property değerlerine göre tablo hücrelerini oluşturmamız gerekecektir. Yani burada reflection(yansıma) tiplerine ihtiyaç duyacağız. Geliştireceğimiz metot aşağıdaki gibi olacaktır. Yapılan işlemlerle ilgili kısa açıklamalar kod içerisindeki yorum satırlarında yer alıyor.

HtmlHelperExtensions.cs
using System.Web.Mvc;

using System.Text;

using System.Collections;

using System.Reflection;

 

public static class HtmlHelperExtensions

{

    ...

 

    public static string Table(this HtmlHelper htmlHelper, IList list, bool showHeader)

    {

        //Eğer liste boş ise boş bir string döndür

        if (list.Count == 0)

            return string.Empty;

 

        StringBuilder tablo = new StringBuilder();

        tablo.AppendLine("<table>");

        //Tabloda başlık görüntülensin isteniyorsa ilk satırımız property'lerin isimleri olacaktır.

        //Bu doğrultuda koleksiyonun ilk satırındeki nesnenin property bilgilerine bakarak başlık satırı oluşturuluyor

        if (showHeader)

        {

            object firstItem = list[0];

            tablo.Append("<tr>");

            //GetType metodu bir nesnenin type bilgisini getirir.

            //Bu değer üzerinden GetProperties metodu ile nesnenin property listesine erişilebilir

            foreach (PropertyInfo property in firstItem.GetType().GetProperties())

            {

                tablo.Append("<td>");

                tablo.Append(property.Name); //Property'nin adı

                tablo.Append("</td>");

            }

            tablo.AppendLine("</tr>");

        }

 

        foreach (object item in list) //Liste içerisindeki nesnelerin özelliklerini satır satır oluştur

        {

            tablo.Append("<tr>");

            foreach (PropertyInfo property in item.GetType().GetProperties())

            {

                tablo.Append("<td>");

                tablo.Append(property.GetValue(item, null).ToString()); //GetValue metodu property'deki değeri getirir

                tablo.Append("</td>");

            }

            tablo.AppendLine("</tr>");

        }

        tablo.AppendLine("</table>");

 

        return tablo.ToString(); //Oluşan HTML kodları geri döndür

    }

}

Yardımcı HTML metodumuzu oluşturduk. Etkin şekilde kullanımını incelemek için öncelikli olarak kendimize Product adında bir class oluşturup, ardından da bir List koleksiyonu için Index.aspx adındaki View nesnemizden bu metodu çağıralım. Aşağıda Product adındaki class'ımız ve Views/Home/Index.aspx dosyasına eklediğimiz kodlar yer almaktadır.

Product.cs
public class Product

{

    //Burada C# 3.0 ile gelen auto implemented property özelliğini kullanıyoruz.

    //Yani field ve get-set bloklarının gövdelerini oluşturmadan property tanımlıyoruz.

    public int Id

    {

        get; set;

    }

    public string Name

    {

        get; set;

    }

    public double Price

    {

        get; set;

    }

}

 

Views/Home/Index.aspx
<%

    List<Product> urunListe = new List<Product>{

                                new Product { Id=2, Name="Kalem", Price=1.25},

                                new Product { Id=4, Name="Defter", Price=3.49},

                                new Product { Id=5, Name="Çanta", Price=19.25}

                                };

    Response.Write(Html.Table(urunListe,true));

%>

View'ı görüntülediğimizde aşağıdaki gibi bir çıktıyı görebiliriz.

Table çıktısı üreten HTML Helper

Gördüğünüz gibi hazırlayacağımız yardımcı HTML metotlarını Html özelliği içerisinde saklayarak MVC projelerimizde daha kolay HTML çıktılar oluşturabilmekteyiz. Şu an için MVC uygulamalarında kullanabileceğimiz herhangi bir sunucu kontrolü bulunmamaktadır, ancak yakın gelecekte bazı temel kontrollerin bu ortama dahil edilmesi planlanmakta. Bu süreçte MVC uygulamaları için kendi HTML Helper metotlarımızı üreterek sunucu kontrollerinin olmamasından ortaya çıkan dezavantajı giderebiliriz.

23 Nisan 2009 Perşembe 18:41

Yorum - RSSYorumlar (0)

Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

SQL Server 2008 Günü

SQL_Server_2008_Gunu

Kayıt için www.inetatr.org

20 Nisan 2009 Pazartesi 00:36

Yorum - RSSYorumlar (0)

Kategori: Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

nedirtv?com Nisan Ayı Webinerleri

Yoğunluktan dolayı bu ayki webinerlerin duyurusunu ancak yapabiliyorum. Webinerlere bu ayda tüm hızıyla devam ediyoruz. Programımız yine oldukça yoğun ve yine ilk kez değineceğimiz konular fazlasıyla var; Silverlight 3.0 Beta, ASP.NET MVC ve SQL Data Services gibi… Ben de 27 Nisan’da ASP.NET MVC Framework’e Giriş webineri ile bu aya katkıda bulunuyorum.

Detaylı programave webiner bilgilerine bu linkten ulaşabilir, bu linkten de Facebook’taki olayı takviminize kaydedebilirsiniz.

16 Nisan 2009 Perşembe 09:02

Yorum - RSSYorumlar (0)

Kategori: Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Ineta Next Hit ve ASP.NET 4.0 Sunumu Ardından

Hafta sonu Yıldız Teknik Üniversitesi’nde yine güzel bir Ineta etkinliği gerçekleştirdik. Benim sadece ikinci gününe katılabildiğim bu etkinlik sonunda yine her zaman ki gibi katılımcılardan çok olumlu bildirimler, teşekkürler aldık. Umarız bu iki gün katılan herkes için faydalı geçmiştir ve yakın gelecekteki yazılım teknolojileri ile ilgili biraz olsun fikir sahibi olmalarını sağlayabilmişizdir.

Benim de Next Hit’in ikinci gününde yaklaşık 2 saatlik ASP.NET 4.0 oturumum vardı. Oldukça keyifli geçen ve güzel sorularla daha da renklenen bu sunumda henüz 4.0 yeniliklerini test edebileceğimizi bir IDE ortamı olmadığı için(VS 2010 CTP var ama orası pek iş görmüyor şimdilik) daha çok eski sürümlerdeki sorunlardan, gelen yeniliklerin ne gibi sorunları giderdiğinden bahsetme şansımız oldu. Her ne kadar fazla test yapamadık desemde ClientIdMode, URL Routing, AJAX 4.0, Dynamic Data ve ASP.NET MVC ile ilgili demolar yapma şansını bulduk:)

Sunumumda kullandığım yansı dosyasını aşağıdaki linkten indirebilirsiniz. Etkinlikte emeği geçen ve katılan herkese çok teşekkür ediyorum…

ASP.NET 4.0 Sunumu

ineta_next_hit_sonrasi

Gün sonunda çekilen bir hatıra fotoğrafı

13 Nisan 2009 Pazartesi 08:56

Yorum - RSSYorumlar (2)

Etiket: ,
Kategori: ASP.NET | Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET MVC Uygulamalarında HTML Helper Metotlarıyla Çalışmak

WebForm'lardan MVC uygulamalarına geçiş yaptığımızda yaşadığımız sıkıntılardan birisi sunucu kontrollerinin olmamasıdır. Olay tabanlı bir ortamda olmadığımız ve PostBack mekanizmasının işlemediği için zaten ASP.NET MVC uygulamalarında sunucu kontrollerini aynen kullanmak gibi bir beklentimiz de olamaz. Peki sunucu kontrollerindeki boşluğu MVC uygulamalarında nasıl doldurabiliriz? Her ne kadar WebForm'larındaki kadar etkili ve kolay olmasada, HTML Helper(Yardımcı HTML) metotları kullanılarak daha önceden hazırlanmış HTML şablonlarının sayfalarımıza uygulanmasını sağlayabiliriz.

HTML Helper'lar aslında Html adındaki bir nesne üzerinden eriştiğimiz metotlardan başka birşey değildir. Bu metotların temel görevi belirli HTML kodlarının üretilmesini sağlamaktır. Yani sizin normalde <a href="Urun/3">3 nolun ürün</a> şeklinde yazacağınız bir HTML kodunu Html.ActionLink("3 numaralı ürün", "Details/3", "Urun") şeklinde yazabilmenizi sağlar. Buradaki örneği gördüğünüzde "ben bu işlemi <a....> elementi ile daha kolay yapabiliyorum, neden uzun uzun yazayım?" gibi bir düşünce gelecektir, ancak Html.ActionLink metodunun sunucu tarafında çalışan, foreach vb. yapılar içerisinde kolayca kullanılabileceğinden bahsedecek olursak daha etkin bir yöntem olacağı anlaşılacaktır. Dilerseniz hali hazırda gelen HTML Helper metotlarına bir göz atalım.

Html.ActionLink: <a> elementi oluşturarak bir action metoduna link verilmesini sağlar.
Html.BeginForm: <form> elementini oluşturur.
Html.CheckBox: Checkbox; yani <input type="checkbox"...> elementi oluşturur.
Html.DropDownList: <select..><option>..</option>.....</select> elementlerini(WebForm'lardan tanıdığımız DropDownList'in çıktısı) oluşturur.
Html.Hidden: HTML içerisinde gizli alan; yani <input type="hidden"...> elementi oluşturur.
Html.ListBox: <select multiple="multiple"..><option>..</option>.....</select> elementlerini(WebForm'lardan ListBox'ın çıktısını) oluşturur.
Html.Password: Şifre için metin kutusu oluşturur(<input type="password"...>)
Html.RadioButton: <input type="radio"....> elementi oluşturur.
Html.TextArea: Birden fazla satırı olan bir metin kutusu oluşturur(<textarea....> elementi).
Html.TextBox: Metin kutusu oluşturur(<input type="text"....> elementi).

Yukarıda görülen tüm metotlar MVC uygulamalarında kullanabildiğimiz Html adındaki bir nesne üzerinden erişilen metotlarıdır. Html, View nesnelerinden erişilebilen System.Web.Mvc isimalanı altındaki HtmlHelper tipinden oluşan bir nesnedir. Aslında yukarıdaki metotlarla ilgili önemli bir ayrıntıya değinmeden geçemeyeceğim; bu metotların tamamı Extension Method'tur, yani HtmlHelper tipine sonradan eklenen metotlardır. Bu bizim için oldukça önemli bir nokta, zira bizlerde kendi özel Html Helper metotlarımızı oluşturarak HtmlHelper class'ını genişletebiliriz.

Biraz da pratik. Bu metotları MVC uygulamalarında nasıl kullanabileceğiz? Aslında herbirinin farklı parametre yapısı olduğu için farklı şekillerde kullanımları bulunmaktadır. Hatta her metodun kendi içerisinde birçok aşırı yüklenmiş versiyonu dahi bulunmaktadır. Bu yazımızda temel olarak bu Helper metotlarından birkaçının kullanımını incelemeye çalışacağım.

Öncelikli olarak bir ASP.NET MVC Web Application projesi açarak örneğe başlıyoruz. Uygulamamın Controllers kısmındaki HomeController class'ına Kayit adında bir action metodu ekliyor ve metodun içerisinde iken fareye sağ tıklayarak Add View diyoruz. Açılan pencereden herhangi bir değişiklik yapmadan Kayit.aspx adında bir View nesnemizi Home view'ı altına ekliyoruz. Kayit.aspx sayfasına BeginForm, EndForm, ActionLink, RadioButton yardımcı metotlarını kullanarak basit bir form hazırlıyoruz. Akla nereden Submit butonumuz sorusu gelebilir, yukarıdaki listeden de görüldüğü gibi Submit işlemi yapan bir yardımcı Html metodu maalesef yok. Bunun yerine <input type="submit"...> şeklinde butonumuzu kendimiz oluşturacağız.

Controllers/HomeController.cs
[HandleError]

public class HomeController : Controller

{

    public ActionResult Kayit()

    {

        return View();

    }

   ...

}

 

Views/Home/Kayit.aspx

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

 

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

    Kayit

</asp:Content>

 

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

    <h2>Kayit</h2>

 

    <% Html.BeginForm(); %>

    İsminiz: <%=Html.TextBox("txtIsim", "Adınızı girin...") %>

    <br />

    Şu an neredesiniz:  <%=Html.RadioButton("is", 0) %>İş yerinde

                        <%=Html.RadioButton("ev", 1) %>Evde

    <br /><input id="btnGonder" type="submit" value="Gönder" />

    <% Html.EndForm(); %>

</asp:Content>

Uygulamayı çalıştırıp adres satırının sonuna Home/Kayit yazıp sayfanın çıktısına bakalım.

 
Resim: Sayfanın çıktısı

<h2>Kayit</h2>

 

<form action="/Home/Kayit" method="post">

İsminiz: <input id="txtIsim" name="txtIsim" type="text" value="Adınızı girin..." />

<br />

Şu an neredesiniz:  <input id="is" name="is" type="radio" value="0" />İş yerinde

                    <input id="ev" name="ev" type="radio" value="1" />Evde

<br /><input id="btnGonder" type="submit" value="Gönder" />

</form>

Görüldüğü gibi BeginForm ve EndForm <form> elementini açılığ kapatılmasını, Textbox <input type="text"...> elementini, RadioButton ise <input type="radio"...> elementinin oluşmasını sağlamış. Html.TextBox() metodunu ele alacak olursak ilk parametre oluşturulacak elementin id'sini, ikinci değer ise içerisine yazılacak value bilgisini belirler. Html.RadioButton içinde aynı durum geçerlidir. Diğer yardımcı Html metotları içinde benzer kullanım şekilleri geçerlidir. Yalnız DropDownList ve ListBox gibi metotlar liste nesneleriyle çalışabilmektedir. ASP.NET Web Form'lardaki isimlerinden de hatırladığımız gibi bu kontrolleri DataTable veya DataSource nesnelerine bağlayabiliyorduk. Buradaki liste metotlarımızda benzer şekilde koleksiyon nesneleriyle çalıştırılabilmekte ve liste içerisindeki tüm değerlerin Html kodlarına dönüştürülmesi sağlanabilmektedir.

Yukarıda hazırladığımız sayfaya son olarak içerisinde şehirleri saklayan bir DropDownList ekleyelim. Aşağıda sayfaya eklediğimiz kodlar, sayfanın görünümü ve Html çıktısı görülmektedir.

Views/Home/Kayit.aspx dosyasına eklenen kodlar:
Yaşadığınız şehir: <%

           Dictionary<string, string> sehirler = new Dictionary<string, string>();

           sehirler.Add("-1", "Şehir seçin");

           sehirler.Add("6", "Ankara");

           sehirler.Add("16", "Bursa");

           sehirler.Add("34", "İstanbul");

 

           SelectList list = new SelectList(sehirler, "key", "value");

           Response.Write(Html.DropDownList("ddlSehir", list));

         %>

Kodları inceleyecek olursak; DropDownList metodu string bir name değeri ile IEnumerable<SelectListItem> tipinden selectList adında bir liste nesnesi alır. name değeri oluşacak <select> elementinin id'sini, selectList ise DropDownList'in item'larını belirler. SelectList tipinden oluşturacağımız bir koleksiyona List<T> veya Dictionary<T,K> tipinden başka bir koleksiyonun değerlerini aktarabiliyoruz. Zaten SelectList nesnesi de DropDownList metoduna ikinci parametre olarak gidecek ve böylece oluşturulan 4 tane sehir seçeneği Html çıktıda görüntülenebilecektir.


Resim: Sayfanın yeni görünümü

Html.DropDownList'in oluşturduğu kodlar:
Yaşadığınız şehir: <select id="ddlSehir" name="ddlSehir"><option value="-1">Şehir seçin</option>

    <option value="6">Ankara</option>

    <option value="16">Bursa</option>

    <option value="34">İstanbul</option>

</select>

ListBox'ta DropDownList ile aynı mantıkta çalışmaktadır. Böylece basit şekilde oluşturulabilen TextBox, RadioButton gibi Html Helper metotlarının yanında DropDownList'i de incelemiş olduk.

8 Nisan 2009 Çarşamba 08:47

Yorum - RSSYorumlar (0)

Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Microsoft MVP Ödülü

mvp_logoSon bir yıl içerisinde yaptığım çalışmalardan dolayı Microsoft tarafından ASP/ASP.NET kategorisinde En Değerli Profesyonel(MVP) ödülüne layık görüldüm. Bugüne kadar topluluk siteleri ve dergilerde yayınladığım makalelerin, verdiğim seminer, webiner ve eğitimlerin, bana mail yoluyla ulaşan yüzlerce insana yardımcı olarak yapmış olduğum gönüllü bilgi paylaşımımın Microsoft tarafından böyle güzel bir ünvanla ödüllendirilmesi gerçekten gurur verici bir olay. Bana her zaman yol gösteren, yardımcı olan ve bu ödülde payları olduğunu düşündüğüm onlarca kişiye sonsuz teşekkürlerimi sunuyorum.

ASP.NET kategorisinde MVP olmam, yakın zaman diliminde önemli paylaşımlara aynı hızla devam etmem gerektiğini gösteriyor. Zira ASP.NET MVC, Dynamic Data, AJAX, ASP.NET 4.0 gibi konularda Türkçe blog postları, makaleler, seminerler ve webinerler hazırlamak bu yeni teknolojilerin insanlara ulaşması için önemli olacaktır. Umarım omzuma atılan bu büyük yükü başarıyla taşır, bilgi paylaşımı yolunda daha fazla insana, daha başarılı bir şekilde ulaşabilirim.

MVP profil sayfama bu linkten ulaşabilirsiniz.

2 Nisan 2009 Perşembe 00:27

Yorum - RSSYorumlar (10)

Kategori: Duyuru-Haber | Kişisel

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Bağlantılar



Takip Et

RSS Feed twitter friendfeed

Seminer/Webiner Programım

  • Seminer-WebinerASP.NET 4.0 WebForms Yenilikleri (Microsoft İstanbul Ofisi)
    29 Mayıs 2010

  • Seminer-WebinerVisual Studio 2010 Yenilikleri (Osmangazi Üniversitesi)
    15 Mayıs 2010

  • Seminer-WebinerASP.NET AJAX ile Zengin Internet Uygulamaları Geliştirme (Microsoft İstanbul Ofisi)
    3 Mayıs 2010

>> Etkinlik Takvimi