• Şu anda 5/5 Yıldız.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET'de Kullanıcı Kontrollerine Genel Bakış

Gönderen umutuygar25.10.2007 00:14:00

Bazen hazır ASP.NET Web sunucu kontrolleri tarafından desteklenmeyen işlevleri gerçekleştirmek isteyebilirsiniz. Bu gibi durumlarda kendi kontrollerinizi yaratmanız mümkün. İki seçeneğiniz var;

  • Kullanıcı Kontrolleri: Kullanıcı kontrolleri içine işaretleyici ve web sunucu kontrolleri yerleştirebileceğiniz taşıyıcılardır. Bu kontrollere birim gibi davranabilir dolayısıyla özellik ve yöntemlerini tanımlayabilirsiniz.
  • Uyarlanmış kontroller: Uyarlanmış kontrol, “Control” ve “WebControl” den kalıtımsal olarak türeterek yazdığınız sınıfdır.

Kullanıcı kontrollerinin oluşturulması, uyarlanmış kontrollere oranla büyük ölçüde daha kolaydır çünkü varolan kontrolleri tekrar kullanma şansınız vardır. Bu da özellikle karışık kullanıcı arayüzü unsurları ile birlikte oluşturulmalarını kolaylaştırır. Bu makale ASP.NET kullanıcı kontrolleri ile çalışma hakkında genel bir bakış sağlamaya yöneliktir.

Kullanıcı Kontrolü Yapısı

Bir ASP.NET kullanıcı kontrolü hem arayüzü hem de kodu bakımından bütün bir ASP.NET web sayfasına (.aspx dosyası)  benzer. Kullanıcı kontrollerini de ASP.NET web sayfalarını oluşturduğunuz şekilde oluşturursunuz ve istediğiniz işaretleyici ve alt kontrolleri eklersiniz. Bir kullanıcı kontrolü, aynı web sayfasının yapabildiği gibi kendi içeriğini çalışma zamanında değiştirebilecek veri bağlama gibi kodlar içerebilir.  Kullanıcı kontrollerinin ASP.NET web sayfalarından ayrıldığı noktalar aşağıdaki gibidir: 

·         Kullanıcı kontrollerinin dosya uzantıları .ascx’dir.

·         Kullanıcı kontrolleri ayarlar ve diğer özellikleri tanımlamak için @ Page komutu yerine @ Control komutu içerir.

·         Kullanıcı kontrolleri tek başlarına çalıştırılabilir dosyalar değillerdir. ASP.NET sayfaları içerisine herhangi bir kontrolün yerleştirildiği gibi yerleştirilmeleri gerekir.

·         Kullanıcı kontrolleri html, body ve form etiketlerini içermezler. Bu etiketler kontrolün bulunduğu web sayfasında olmak zorundadır. 

ASP.NET web sayfasında kullandığınız bütün HTML etiketlerini (html, body ve form etiketleri hariç) ve web kontrollerini kullanıcı kontrolünde de kullanabilirsiniz. Mesela araç çubuğu olarak kullanılmak üzere bir kullanıcı kontrolü oluşturuyorsanız bu kullanıcı kontrolünün üzerine bir dizi Button web sunucu kontrolü yerleştirerek bu butonlar için olay yordamları oluşturabilirsiniz. Aşağıdaki örnek, kullanıcının aşağı ve yukarı butonlarına tıklayarak metin kutusu içerisindeki bir dizi seçeneği değiştirebildiği bir döndürücüyü çalıştıran kullanıcı kontrolünü gösteriyor. 

Güvenlik Notu

Bu örnek potansiyel bir tehdit olarak kullanıcı girdilerini kabul eden metin kutusu içeriyor.  Varsayılan olarak ASP.NET web sayfaları kullanıcının bu kutulara girdiği değerlerin betik ya da HTML etiketi içerip içermediğini kontrol ediyor.

Daha fazla bilgi için Script Exploits Overview.

<% @ Control Language="C#" ClassName="KullanıcıKontrolu1" %>

<script runat="server">

protected int suAnkiRenkIndeksi;

protected String[] renkler = {"Red", "Blue", "Green", "Yellow"};

protected void Page_Load(object sender, EventArgs e)

{

if (IsPostBack)

  {

     suAnkiRenkIndeksi = Int16.Parse(ViewState["suAnkiRenkIndeksi"].ToString());

  }

else

  {

     suAnkiRenkIndeksi = 0; RenkGoster();

  }

  }

protected void RenkGoster()

{

  metinRengi.Text = renkler[suAnkiRenkIndeksi];

  ViewState["suAnkiRenkIndeksi"] = suAnkiRenkIndeksi.ToString();

}

protected void butonUst_Click(object sender, EventArgs e)

{

if(suAnkiRenkIndeksi == 0)

  {

     suAnkiRenkIndeksi = renkler.Length - 1;

  }

  else

  {

     suAnkiRenkIndeksi - = 1;

  }

  RenkGoster();

  }

protected void butonAlt_Click(object sender, EventArgs e)

{

if(suAnkiRenkIndeksi == (renkler.Length - 1))

  { suAnkiRenkIndeksi = 0; }

else

  { suAnkiRenkIndeksi += 1; }

  RenkGoster();

}

</script> 

<asp:TextBox ID="metinRengi" runat="server" ReadOnly="True" />

<asp:Button Font-Bold="True" ID="butonUst" runat="server" Text="^" OnClick="butonUst_Click" />

<asp:Button Font-Bold="True" ID="butonAlt" runat="server" Text="v" OnClick="butonAlt_Click" />

 

Dikkat ettiyseniz kullanıcı kontrolü ASP.NET sayfasına oldukça benziyor; birkaç kontrol (bir metin kutusu ve iki buton) ve butonların tıklanma olayları ile sayfanın yüklenme olayını işlemek için kodlar bulunuyor. Ancak kullanıcı kontrolü, içindeki kontroller hariç hiçbir etiket içermiyor ve @ Page komutu yerine @ Control komutu ile başlıyor.

Bir Sayfaya Kullanıcı Kontrolü Eklemek

Bir kullanıcı kontrolünü bir taşıyıcı sayfaya eklemek için onu sözkonusu sayfasa kayıt ettirmelisiniz. Kaydederken, sayfa üzerinde kullanıcı kontrol bildiriminizi yaparken kullanacağınız kullanıcı kontrolünü içeren .ascx dosyasını, önek etiketini ve isim etiketini belirtmelisiniz.

Detaylar için How to: Include a User Control in an ASP.NET Web Page.

Kullanıcı Kontrolü için Özellikleri ve Yöntemleri Belirleme

Bir sayfanın özelliklerini ve yöntemlerini nasıl belirliyorsanız kullanıcı kontrolünün özellik ve yöntemlerini de aynı şekilde belirleyebilirsiniz.  Kullanıcı kontrolünün bir özelliğini tanımladığınızda, aynı zamanda bu özelliği hem bildirimsel olarak hem de kod içerisinde değiştirme imkanı kazanmış oluyorsunuz.

Kullanıcı Kontrolündeki Olaylar

Bir kullanıcı kontrolü web sunucu kontrolleri içerdiğinde bu kullanıcı kontrolü içerisine alt kontroller tarafından tetiklenen olayları işlemek üzere kod yazabilirsiniz. Örneğin, bir kullanıcı kontrolü bir buton içeriyorsa bu kullanıcı kontrollünün içinde butonun tıklanma olayı için bir işleyici oluşturabilirsiniz. Taşıyıcı sayfanın varsayılan olarak kullanıcı kontrolündeki alt kontroller tarafından tetiklenen olaylara erişimi yoktur. Ancak kullanıcı kontrolünün kendisi için olay yordamları tanımlayarak, taşıyıcı sayfanın olay sırasında bilgilendirilmesi için tetiklenmesini sağlayabilirsiniz. Bunu herhangi bir sınıf için olay yordamı tanımlar gibi yapabilirsiniz. Daha çok bilgi için Raising an Event.

Dış Kaynaklara Başvuru

Bir kullanıcı kontrolü çalıştığında resim veya çapa gibi diğer sayfalarda bulunan dışsal kaynaklara başvurular, kullanıcı kontrolünün adresi kök adresmiş gibi çözümlenir. Örneğin; diyelim ki bir kullanıcı kontrolümüz var ve içinde ImageUrl özelliği Images/Buton1.gif olarak tanımlanmış bir resim kontrolümüz var. Bu resimin tam adresini çözümlerken, resimin adresi kullanıcı kontrolünün adresine eklenir. Eğer kullanıcı kontrolü kendi alt klasörlerinde bir yerde olmayan bir kaynağa başvuru yapıyorsa, çalışma zamanında bu yolu çözümleyebilecek doğru yolu ImageUrl özelliğinde tanımlamak zorundasınız. 

Önbellekleme ve Kullanıcı Kontrolleri

Kullanıcı kontrolleri, taşıyıcı sayfalardan ayrı olarak önbellekleme komutlarını destekleyebilirler. Dolayısıyla sayfalarınıza kullanıcı kontrolleri ekleyebilir ve sayfaları parça parça önbellekleyebilirsiniz.

Daha fazla detay için Caching Portions of an ASP.NET Page. 

Kaynak: http://msdn2.microsoft.com/en-us/library/fb3w5b53(VS.80).aspx

Serinin bir sonraki yazısı ASP.NET de Kullanıcı Kontrolleri Oluşturma Uygulaması için buradan buyrun...

 

4 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , , , ,


İlişkili yazılar

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag





Önizleme

28.08.2008 20:20:21







Tüm hakları saklıdır. Copyright Umut Uygar @2007

Son yorumlar

Son yazılar


Takvim

<<  Ağustos 2008  >>
PaSaÇaPeCuCuPa
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

Gönderileri Büyük Takvimde Gör

Sayfalar

    Oturum Aç
    Pardus... Özgürlük İçin...