You are on page 1of 3

kerem 8/2/05 12:10 PM Page 1

»
Planlama

Web Kullan›c›
Kontrolleri
.NET ‹le etkileflimli Web Kullan›c› Kontrollerini kullanarak
hayat›n›z› kolaylaflt›r›n
Web Kontrollerinin Avantajlar›

H
erkese merhaba! Bu ay, .NET ile
Web uygulamalar› gelifltiren or- Peki, durup dururken niye bir Web kontrolü kul-
ta düzeydeki programc›lar› se- lanmak isteyelim? Bunun en önemli sebebi, Web
vindirecek bir yaz› ile kontrollerinin bize sa¤lad›¤› nesne temelli prog-
karfl›n›zday›z. C# ile Web uygu- ramc›l›k avantajlar›d›r. Farkl› Web sayfalar›nda
lamalar› gelifltiriyorsunuz. Gelifltirdi¤iniz sayfa- s›kl›kla kulland›¤›m›z bir tasar›m› Web kontrol
larda zaman zaman Web User Control’lara da yer içerisinde bir kez kodlad›¤›m›zda, söz konusu ta-
veriyorsunuz. Peki, User Control’lar›n›zdan ye- sar›m, dâhil etti¤imiz sayfalar içerisinde otoma-
terli verimi alabildi¤inizden emin misiniz? tik olarak belirecektir.
Gelin, ifle temel kavramlar› flöyle bir hat›rlaya-
rak bafllayal›m... Web User Control’ün ne oldu-
¤unu herkes biliyor, öyle de¤il mi?
Hat›rlayaca¤›n›z gibi, .NET, bir web projesi içeri-
sinde iki temel arabirim seçene¤i sunuyordu:
Web formu ve Web kontrolleri. Web formlar›, C#
ve HTML deste¤i ile haz›rlanan ve dinamik bir fle-
kilde Web sayfas› üretebilen ö¤elerdir. Web kon-
trolleri ise tek bafllar›na çal›flt›r›lamayan, ancak
Web formlar› (sayfalar›) içerisine dahil edilebilen
küçük kod / tasar›m parçalar›d›r.

Farkl› sayfalar aras›ndaki ortak özellikleri


fiekil 2: merkezi bir yerden idare etmek, Web
kontrolleri sayesinde mümkündür.

Ortak tasar›m üzerinde bir de¤ifliklik yapmak


istedi¤imizde, Web kontrolü bar›nd›ran (belki de
yüzlerce) sayfaya hiç dokunmadan, sadece Web
kontrolünü modifiye etmemiz yeterlidir.
Buraya kadar anlafl›lmayan bir fley yok, de¤il
mi? Güzel... Birçok Web programc›s›n›n, Web
kontrolleri hakk›ndaki temel tecrübeye zaten sa-
hip oldu¤unu tahmin ediyorum.

Etkileflimli Web Kontrolleri


Peki, ya size Web kontrollerinin (tasar›m›n öte-
sinde yer alan) programc›l›k ihtiyaçlar›na da ce-
vap verebildi¤ini söylersem? Evet, sonuçta Web
kontrolü dedi¤imiz fley de temelde bir s›n›ft›r, öy-
Kerem Köseo¤lu Web kontrolleri, tek bafllar›na bir ifle
le de¤il mi? Bu durumda; bir Web kontrolü de her
fiekil 1: yaramamalar›na ra¤men, Web sayfalar›
xxxxxxx@xxxxxxxx.com içerisinde oldukça faydal› olabilir... s›n›f gibi ifllevlere sahip olabilir.
xxxxxxxxxxxx xxxxxxx Bir Web kontrolü içerisine ekleyece¤imiz eks-
xxxxxxxxxxxxxxxx xxxxxxx Web kontrollerinin haz›rlanmas› s›ras›nda yi- tra fonksiyonlar sayesinde, söz konusu kontrolü,
xxxxxxxxxxxxxxxxxxxxxx
ne C# ve HTML dillerinden faydalan›l›r.

30 Windows &.NET Magazine A⁄USTOS 2005 www.winnetmag.com.tr


kerem 8/2/05 12:10 PM Page 2

Web Kullan›c› Kontrolleri

<asp:Button ID="btn3" Text="Almanca" {


içinde bulundu¤u sayfadan gelen ko- Runat="server" /> label1.Text = "Hoflgeldiniz!";
mutlara cevap verecek hale getirebiliriz. </td> }
Kar›fl›k m› geldi? Panik yok! Örne¤i- </tr>
miz haz›r bile... Konuyu incelemeye, ba- </table> public void displayEN()
sit bir Web sayfas› ve bu sayfa içerisine </form> {
yerlefltirilmifl basit bir Web kontrolü ile </body> label1.Text = "Welcome!";
bafllayal›m. </HTML> }

Gördü¤ünüz gibi, oldukça basit bir public void displayDE()


kontrol ve sayfa söz konusu. fiimdi ge- {
lelim örne¤imizin hedefine... Bu örne¤i label1.Text = "Willkommen!";
öyle bir hale getirece¤iz ki; ziyaretçimiz }
WebForm1 içerisindeki TÜRKÇE dü¤- }
Oldukça basit bir sayfa, öyle mesine t›klad›¤›nda, sayfaya gömülü
fiekil 3: de¤il mi? halde bulunan kontrolümüz Türkçe bir S›rada, kontrolü bar›nd›ran sayfaya
Sayfan›n sol taraf›ndaki turuncu metin görüntüleyecek. Ayn› flekilde; ‹N- eklememiz gereken kodlar var. Sayfa
alan, sayfaya gömülü bir flekilde çal›flan G‹L‹ZCE dü¤mesi ‹ngilizce bir metnin, içinde tek yapmam›z gereken fley, t›kla-
bir Web kontrolüdür. Sa¤ taraftaki ma- ALMANCA dü¤mesi ise Almanca bir nan dü¤menin diline ait WebUserCon-
vi alan ise, sayfan›n kendisine ait kod- metnin görüntülenmesini sa¤layacak. trol1 fonksiyonunu ça¤›rmak olacak.
lard›r. ‹sterseniz gelin, WebForm1.aspx Yani, ziyaretçimiz Türkçe dü¤mesine
ve WebUserControl1.ascx adl› dosyalar- t›klarsa displayTR(), ‹ngilizce dü¤mesi-
da saklanan Web kodlar›na flöyle bir göz ne t›klarsa displayEN(), Almanca dü¤-
atal›m. mesine t›klarsa displayDE()
fonksiyonunu ça¤›raca¤›z.
WebUserControl1.ascx
<asp:Label ID="label1" text="Buras› Web WebForm1.aspx.cs
User Control!" Runat="server" /> public class WebForm1 :
System.Web.UI.Page
WebForm1.aspx {
<HTML> protected System.Web.UI.WebCon-
<HEAD> trols.Button btn1;
<title>WebForm1</title> protected System.Web.UI.WebCon-
<meta name="GENERATOR" Content="Mic- trols.Button btn2;
rosoft Visual Studio .NET 7.1"> protected System.Web.UI.WebCon-
<meta name="CODE_LANGUAGE" Con- trols.Button btn3;
tent="C#"> protected WebUserControl1 concon;
Kontrolümüzün, sayfadan
<meta name="vs_defaultClientScript" con- private void Page_Load(object sender,
fiekil 4: t›klanan dü¤meye ait dilde metin
tent="JavaScript"> görüntülemesini istiyoruz. System.EventArgs e)
<meta name="vs_targetSchema" con- {
tent="http://schemas.microsoft.com/intelli- Hedefimizi hayata geçirmeye önce }
sense/ie5"> kontrolümüzden bafllayal›m. Kontrolü- private void btn1_Click(object sender,
</HEAD> müze ait kod içerisine, de¤iflik dillerde System.EventArgs e)
<body MS_POSITIONING="GridLayout"> metin gösterebilen 3 tane fonksiyon ek- {
<form id="Form1" method="post" ru- leyece¤iz. concon.displayTR();
nat="server"> }
<table> WebUserControl1.ascx.cs
<tr> public class WebUserControl1 : private void btn2_Click(object sender,
<td bgcolor="#ffcc00"> System.Web.UI.UserControl System.EventArgs e)
<uc1:WebUserControl1 id="concon" ru- { {
nat="server" /> protected System.Web.UI.WebControls.La- concon.displayEN();
</td> bel label1; }

<td bgcolor="#00ccff"> private void Page_Load(object sender, private void btn3_Click(object sender,
Buras› Web Sayfas›! System.EventArgs e) System.EventArgs e)
<asp:Button ID="btn1" Text="Türkçe" Ru- { {
nat="server" /> } concon.displayDE();
<asp:Button ID="btn2" Text="‹ngilizce" Ru- }
nat="server" /> public void displayTR() }

www.winnetmag.com.tr Windows &.NET Magazine A⁄USTOS 2005 30


kerem 8/2/05 12:10 PM Page 3

Planlama

Oldukça aç›k, öyle de¤il mi? fiimdi • E¤er ASP.NET standard›nda bulun-
gelin, projemizi çal›fl›r durumda göre- mayan bir kontrole ihtiyac›n›z varsa,
lim. Türkçe dü¤mesine t›klad›¤›m›zda; kontrolü bir Web formu içerisinde
sayfam›z afla¤›daki görüntüyü alacakt›r. kodlamaya çal›flmak yerine yeni bir
Web User Control yaratmak iyi bir fi-
kir olacakt›r.
• Web projenizin farkl› sayfalar›nda
tekrar tekrar kulland›¤›n›z özerk kod
bloklar›n› Web User Control haline
getirmeniz, sizin ve projenizin lehine
Türkçe dü¤mesine t›klad›ktan olacakt›r. Örne¤in; de¤iflik sayfalarda
fiekil 5: sonra... görüntülemek istedi¤iniz ziyaretçi
‹ngilizce dü¤mesine t›klad›¤›m›zda, anketlerini farkl› sayfalarda tekrar
Web kontrolümüzde ‹ngilizce bir metin tekrar kodlamak yerine; AN-
görüntüleniyor olacak. KET.ASCX adl› bir User Control ya-
ratman›z ve anket koymak istedi¤iniz
sayfalara bu kontrolü dahil etmeniz
yerinde olur.
• Benzer flekilde, farkl› sayfalarda tek-
rarlanan tasar›m bloklar› da Web
User Control haline getirilebilir. Ör-
‹ngilizce dü¤mesine t›klad›ktan ne¤in; sitenin her sayfas›nda yer alan
fiekil 6: sonra... dinamik bir menü söz konusuysa, bu
Son olarak Almanca dü¤mesine t›kla- menüye ait tasar›m› de¤iflik sayfalar-
yaca¤›z. da tekrarlamak yerine tek bir Web
User Control haline getirip farkl› say-
falara dahil etmek yerinde olacakt›r.
• E¤er bir ASP.NET sayfas›n›n kodla-
mas› gittikçe kar›fl›yorsa ve içinden
ç›k›lmaz bir hal al›yorsa, sayfa üze-
rindeki ö¤eleri (programc›l›k mant›-
Almanca dü¤mesine t›klad›ktan ¤› çerçevesinde) mant›ksal bloklara
fiekil 7: sonra... dönüfltürüp, her bir blo¤u ba¤›ms›z
Evet, hepsi bu kadar... Bu yaz›da; ve dinamik birer User Control haline
Web kontrollerinin, içinde bar›nd›klar› getirmek iflleri daha kolay bir hale ge-
sayfalardan izole bir flekilde çal›flmak tirecektir.
zorunda olmad›¤›n› görmüfl olduk. Kon-
trolümüz içine ekleyece¤imiz fonksi- Yard›mc› linkler:
yonlar ve sayfam›zdan yapaca¤›m›z http://msdn.microsoft.com/library/de-
yönlendirmeler sayesinde, sayfam›zla fault.asp?url=/library/en-us/vbcon/
kontrolümüzün iflbirli¤i ve uyum içeri- html/vbwlkWalkthroughCreatingWe-
sinde çal›flmas›n› rahatl›kla sa¤layabili- bUserControls.asp --> Az tecrübeli C#
riz. Bu örne¤e ait proje dosyalar›n›, programc›lar›, ad›m ad›m Web User
dergi Web sitesinin “Ad› geçen dosya- Control yaratma konusunda bu sayfaya
lar” bölümünden indirebilirsiniz. baflvurabilir.
http://msdn.microsoft.com/lib-
.NET Web User Control’ler Ne rary/default.asp?url=/library/en-
Zaman Kullan›l›r? us/vbcon/html/vbwlkWalkthroughCrea
• E¤er ASP.NET içerisinde standart tingWebUserControls.asp --> Az tecrü-
olarak gelen bir kontrol iflinizin bü- beli VB.NET programc›lar›, ad›m ad›m
yük bir k›sm›n› görüyorsa; ancak Web User Control yaratma konusunda
“Keflke fluras› flöyle olsayd›” gibi bir bu sayfaya baflvurabilir.
tak›m endifleleriniz varsa, bu stan- http://msdn.microsoft.com/lib-
dart kontrolü Inherit eden bir Web rary/default.asp?url=/library/en-
User Control yaratmak ve Override us/dv_vjsharp/html/vjwlkwalkthroughc
yöntemiyle kendi kontrolünüzü iste- reatingwebusercontrolwithvisualj.asp -
di¤iniz hale getirmek mant›kl› ve ve- -> Tecrübesiz J# programc›lar› için ad›m
rimli bir çözüm olacakt›r. ad›m Web User Control yaratma.

30 Windows &.NET Magazine A⁄USTOS 2005 www.winnetmag.com.tr

You might also like