asp.net ders içeriği

Transkript

asp.net ders içeriği
ASP.NET DERS İÇERİĞİ
ASP.NET DERS ĠÇERĠĞĠ ............................................................................................................... 1
HAFTA - 1 ......................................................................................................................................... 3
HTML Nedir? ................................................................................................................................... 3
HTML avantajları ........................................................................................................................ 3
HTML dezavantajları.................................................................................................................. 3
Microsoft .NET nedir? ................................................................................................................... 3
ASP Nedir? ....................................................................................................................................... 4
ASP Nasıl ÇalıĢır?............................................................................................................................ 4
Avantajları Nelerdir? ................................................................................................................. 4
Dezavantajları .............................................................................................................................. 9
HAFTA - 2 ...................................................................................................................................... 10
Visual Studio 2008........................................................................................................................ 10
ASP.NET Kontrolleri..................................................................................................................... 12
Sayfalar Arası Veri Aktarımı ..................................................................................................... 13
View State .................................................................................................................................. 14
Control State ............................................................................................................................. 15
Hidden Fields ............................................................................................................................. 15
Cookies (Çerezler)..................................................................................................................... 16
HAFTA - 3 ...................................................................................................................................... 17
QueryStrings ............................................................................................................................. 17
Application/Uygulama............................................................................................................... 17
Session/Oturum ........................................................................................................................ 18
HAFTA - 4 ...................................................................................................................................... 19
ASP.NET Kavramlar ...................................................................................................................... 19
Request/Talep ............................................................................................................................ 19
Response/KarĢılık ...................................................................................................................... 21
Web User Control ......................................................................................................................... 22
HAFTA - 5 ...................................................................................................................................... 23
Master Page .................................................................................................................................... 23
Örnek Site Tasarımı ..................................................................................................................... 24
HAFTA - 6 ...................................................................................................................................... 26
Yeni Üyelik Formu Tasarımı ........................................................................................................ 26
Validation Kontrolleri ................................................................................................................... 27
Required Field Validator .......................................................................................................... 27
Range Validator.......................................................................................................................... 27
Reguler Expression Validator ................................................................................................. 27
Compare Validator..................................................................................................................... 27
Yeni Üyelik BaĢvurusu .................................................................................................................. 28
Üye GiriĢ Sistemi .......................................................................................................................... 28
HAFTA - 7 ...................................................................................................................................... 31
HAFTA - 8 ...................................................................................................................................... 40
HAFTA - 9 ...................................................................................................................................... 41
HAFTA - 10..................................................................................................................................... 42
HAFTA - 1
HTML çalışma prensibi, Avantajları, dezavantajları
Net framework nedir?
Asp nedir? Avantajları, dezavantajları
ASP (Active server pages / Aktif Sunucu Sayfaları)
ASP nasıl çalışır?
HTML Nedir?
Web sayfalarının büyük çoğunluğu HTML içeren metin tabanlı sayfalar olarak
hazırlanmaktadır. Bu sayfalar istemci tarafında çalıĢtığı için kaynak kodlar kullanıcı
tarafından görülmektedir.
İşlem basamakları
1. Web sunucu istekte bulunulan adresin dosya uzantısından dosyanın bir html
dosyası olduğunu algılar.
2. HTML dosya sabit diskten okunarak istemciye gönderilir.
3. Ġstemcideki web tarayıcı dosyayı yorumlar ve sonucu gösterir.
HTML avantajları
1. Tüm tarayıcılarda düzgün bir Ģekilde gösterilebilir.
2. Her istek hızlı gerçekleĢtirilir ve en az düzeyde kaynak kullanılır.
3. Öğrenmek kolaydır.
HTML dezavantajları
1. Çok etkileĢimli değildir.
2. Tasarımları düzenlenmesi ve kontrolü zordur.
3. Çok sayıda sayfa içeren siteler için kullanıĢlı değildir.
4. Hızlı değiĢen içerik ve kiĢiselleĢtirmeler için kullanıĢlı değildir.
Microsoft .NET nedir?
Microsoft .NET insanların, bilginin, sistemlerin ve cihazların iletiĢimini sağlayan bir
platformdur. Ġstemci ve sunucu uygulamaların yanı sıra geliĢtirme araçlarını da
kapsamaktadır. Bu oluĢum içerisinde aynı zamanda:
Web tabanlı uygulamaların, web servislerinin ve her türlü uygulamanın geliĢtirilip
çalıĢtırılabildiği bir platform olan .NET Framework de bulunmaktadır. .NET Framework
ile uygulamalar iletiĢim standartlarına (SOAP, XML, HTTP vb) uygun olarak
geliĢtirilebilmektedir.
Visual Studio .NET, entegre geliĢtirme ortamlarına (Integrated Development
Environment - IDE ) ve araçlara sahiptir. Bu araçlar sayesinde .NET Framework ile
uygulama geliĢtirme daha kolay hale gelmekte ve verimlilik maksimum düzeye ulaĢmaktadır
.NET Framework nedir?
Microsoft .NET Framework, uygulamaların ve web servislerinin inĢa edilebildiği (build),
yayımının yapılabildiği (deploy) ve çalıĢtırılabildiği (run) bir platformdur.
"Build - Deploy - Run" .NET Framework platformu için üç anahtar kelimedir. Verimliliği
yüksek, standartlara uygun ve çoklu dil desteği bulunan bir platformdur. Internet ölçekli
uygulamaların operasyonu ve yayımlanması için karĢımıza çıkan zorluklar .NET
Framework'ün sağladığı servisler sayesinde rahatlıkla aĢılabilmektedir. .NET Framework
iki temel bölümden oluĢmaktadır: Common Lanuguage Runtime, HiyerarĢik düzendeki sınıf
kütüphanesi.
.NET Framework:
20 den fazla programlama diline destek vermekte, uygulama geliĢtiricilerin iĢ mantığı
(business logic) içeren kod kısmına yoğunlaĢmalarını sağlamakta, güvenli, sağlam, yüksek
performanslı uygulamaların geliĢtirilebilmesini sağlamaktadır. Eskiye göre; geliĢtirme,
yayımlama ve yönetimin çok daha kolay olduğu bir platformdur.
ASP Nedir?
Sunucu taraflı bir teknoloji olan ASP, kullanıcı tarafına etkileĢimli, dinamik Web
sayfaları göndermek için kullanılır. ASP, Web programcılarına HTML, scripting ve
kullanıcıdan bağımsız veritabanı uygulamalarını özgürce kullanma fırsatı verir. ASP
programlama ortamının özgür olmasının sebebi tüm derleme iĢleminin sunucu tarafında
bitmesi ve kullanıcının sadece sonuçta oluĢan HTML sayfalarını görmesidir.
ASP Nasıl Çalışır?
Tarayıcıya açmasını istediğiniz dosyanın adresini yazıp çağırdığımızda (Sunucu)
kendisinden icra etmesini istediğiniz dosyayı arar bulur ve eğer bulursa, bu dosyayı hemen
"asp.dll" adlı bir programa iletir. asp.dll'de aldığı bu dosyayı hemen yorumlamaz. "Global.
asa" adlı dosyanın çalıĢıp çalıĢmadığını kontrol eder.
Asp.dll önce gelen dosyada hangi script dilinin kullanıldığına bakar. Ve buna göre
kendini hazırlar. Asp.dll sonra bu derlediği bilgileri, tamamen asp kodlarından ayrılmıĢ,
temiz bir halde browser'a gönderir. Bizde böylece sadece HTML kodlarını görürüz.
Avantajları Nelerdir?
ASP+, daha önce kullanılan Web geliĢtirme (ASP, JSP gibi) modellerine göre aĢağıda
listelenen birçok önemli avantajı sağlamaktadır:
1) Geliştirilmiş Performans
ASP+ sayfaları, sunucu üzerinde çalıĢtırılan NGWS çalıĢtırıcısı kodlarıdır. Yorumlama
temeline göre çalıĢan daha öncekilerle (ASP gibi) karĢılaĢtırıldığında, erken bağdaĢtırma
(early binding), tam zamanında derleme (just-in-time compilation) ve doğal iyileme (native
optimization) ve tamponlama hizmetleri (caching services) gibi avantajlar sağlamaktadır.
Yukarıda anılan bu özellikler, geliĢtiriciler için daha kod yazmaya baĢlamadan önce sağlanan
çarpıcı performans iyileĢtirmeleridir.
2) Üstün Nitelikli Araç Desteği
ASP+ çatısı, geliĢtirme ortamıyla bütünleĢtirilmiĢ olan Visual Studio ile sunulan zengin
bir araç takımı ve tasarımcısı ile tamamlanmıĢtır. WYSIWYG düzenleme (editing), sürüklebırak tarzı sunucu denetimleri (server controls) ve otomatik dağıtım (deployment) bu güçlü
araçların sağlamıĢ olduğu özelliklerin yalnızca birkaç tanesinden bazılarıdır.
3) Güç ve Esneklik
ASP+, NGWS çalıĢtırıcısı üzerine temellendirildiğinden, bu platformun tüm esneklik ve
gücü Web uygulama geliĢtiricisi tarafından kullanılabilir durumdadır. NGWS çalıĢtırıcısının
Temel Sınıf Kütüphaneleri (Base Class libraries), iletim (messaging) ve veri eriĢim (data
access) çözümleri, benzeri olmayan bir biçimde Web"ten eriĢilebilir durumdadır. ASP+,
ayrıca dile bağımlı değildir, Ģöyle ki, geliĢtiriciler uygulamalarında en uygun olan dili seçerek
kodlama yapabilir. Hatta uygulamaların değiĢik bölümleri değiĢik dillerde yazılarak karma
programlama avantajlarından yararlanmak söz konusudur. Dahası, ASP+"a geçiĢ söz konusu
olduğunda, hali hazır kullanılmakta olan COM tabanlı uygulamalara yapılan yatırımlar NGWS
çalıĢtırıcısının karĢılıklı iĢleyebilirlik (interoperability) desteğiyle ile garanti altına
alınmaktadır.
4) Basitlik
ASP+, basit form bilgileri gönderiminden, kimlik doğrulama, kullanıcı tanıma, uygulama
dağıtımı ve site yapılandırmaya kadar tüm genel görevleri yapmayı son derece
basitleĢtirmektedir. Örneğin, ASP+ Sayfa Anaçatısı, uygulama mantığı, olay eldesi ve sunum
(veya görüntüleme) kodlarının tıpkı VB-benzeri form iĢleme modelinde olduğu gibi net
Ģekilde ayrılmasını sağlayarak daha kolay okunabilir ve yönetilebilir kullanıcı arayüzleri
oluĢturulmasını mümkün kılmaktadır. NGWS çalıĢtırıcısı ayrıca otomatik referans sayımı ve
çöp toplama gibi yönetilebilen kod servisleri ile de geliĢtirme iĢlemini basitleĢtirmektedir.
5) Yönetilebilirlik
ASP+, metin-tabanlı ve hiyerarĢik bir yapılandırma sistemi kullanır. Böylelikle sunucu
ortamı ve Web uygulamasına özel ayarların yapılması son derece basitleĢtirilmiĢtir. Çünkü
yapılandırma bilgisi düz metin olarak depolanır, yeni ayarlar yerel yönetim araçlarını
kullanmaksızın basit bir metin iĢlemci aracılığıyla yapılabilir. "Sıfır Yerel Yönetim" filozofisi
ASP+ uygulamalarının dağıtımını oldukça basitleĢtirir. Bir ASP+ uygulaması, çok basit bir
biçimde gerekli dosyaların sunucuya kopyalanması Ģeklinde dağıtılır. Sunucuyu yeniden
baĢlatma veya derlenmiĢ kodun değiĢtirilmesi gibi iĢlemlere gerek yoktur.
6) Ölçeklenebilirlik ve Elde Edilebilirlik
ASP+, ölçeklenebilirlik düĢünülerek tasarlanmıĢtır. Bu nedenle, kümelenmiĢ ve çokiĢlemcili ortamlarda performansı iyileĢtirmek üzere özel olarak tasarlanmıĢ niteliklere
sahiptir. Dahası, iĢlemler ASP+, çalıĢtırıcı (runtime) tarafından yakından izlenir ve yönetilir.
Böylece yanlıĢ davranan bir iĢlem (leaks, deadlock) varsa onun yerine uygulamanın istemleri
devamlı Ģekilde yanıtlamasına yardım eden yeni bir iĢlem baĢlatılır.
7) İsteğe Bağlı Biçimlendirme ve Uzatılabilirlik
ASP+, geliĢtiricilerin uygun gördüğü yerlerde kodlarına takı ("plug-in") yapmalarına izin
veren iyi-faktörlü bir mimari sunmaktadır. Gerçekten de, ASP+ çalıĢtırıcısının herhangi bir
alt bileĢenini kendi yazdığınız herhangi bir bileĢenle zenginleĢtirebilir veya
değiĢtirebilirsiniz. Ġsteğe bağlı doğrulama veya durum (state) servislerinin uygulanması
hiçbir zaman olmadığından daha kolay hale getirilmiĢtir
8) Programlama Dilinde Bağımsızlık
ASP.NET programlama dillerimden bağımsızdır. ASP.NET web yazılımları
geliĢtirebilmek için 20 programlama dili ve fazlasını kullanabiliriz, örneğin, VB.NET, C#,
JScript.NET, C++ with Managed Extensions, COBOL.NET, Perl.NET.
9) Derlenmiş Kod
Bildiğimiz gibi asp scripting dilleriyle çalıĢıyor. Fakat ASP.NET derlenmiĢ kod ve güçlü
tipli dillerle çalıĢıyor, yani gerçek programlama dilleriyle. ASP.NET bu nedenle gerçek veri
tiplerini kullanıyor örneğin integers ve strings.
ASP.NET de kullanılan programlama dilleri daha iyi olağanüstü durum iĢleme gücüne
sahiptirler. ASP.NET içerisinde try … catch … finally deyimleri ile olağanüstü durum iĢleme
imkanına sahibiz
10) Sürükle & Bırak ve Olay Bazlı Programlama
Eğer Visual Basic kullandıysanız, bilirsiniz ki VB’nin en güzel taraflarından birisi
sürükle ve bırak objeleri sistemi ve olay bazlı programlama yani click, doubleclick,
textchange gibi. ASP.NET bu özellikleri WEB Formlarıyla aynı Ģekilde kullanabilirisiniz.
VB’de nasıl program geliĢtiriyorsanız, ASP.NET Web Formları da yani fonksiyonelliği
sağlıyor. ASP.NET içerisinde gerçekten çok iyi dizayn edilmiĢ ve çok sayıda HTML
kontrolleri vardır. Hemen hemen bir ASP.NET sayfasında bulunan bütün HTML kontrolleri
Visual Basic, C#, C++ kodları ile kontrol edilebilir. ASP.NET buna ek olarak yeni nesneye
dayalı programlamayı destekleyen, girdi kontrolleri, programlanabilir listbox’lari, yeni
doğrulama kontrolleri (validation controls). ASP.NET içerisinde örneğin DataGrid, DataList
kontrolleri olup bu kontroller web yazılım geliĢtiricisinin hayatini çok kolaylaĢtırmaktadır
11) Mobile Programlama Desteği
ASP.NET ile sadece web yazılımları değil ayrıca mobil telefonları ve PDA’lar (Palm,
PocketPC’s, RIM devices, etc) içinde yazılım geliĢtirebilirsiniz. ASP.NET de mobil aletleri
için WML (Wireless Markup Language) veya HTML 3.2 (Hyper Text Markup Language) veya
cHTML (Compact Hyper Text Markup Language) of I-mode aletlerini destek sağlar.
ASP.NET mobil aletin kullandığı protokolü otomatik olarak belirler ve ona göre sonucu geri
döndürür.
12) Bağlantısız Veri Erişimi
Asp ve ADO nun en önemli sorunlarından birisi ADO her zaman veritabanına canlı
bağlantıyı tutar. Buda asp sayfalarının çalıĢtırılmasını önemli ölçüde yavaĢlatır. ADO.NET
bağlantısız veri eriĢimini sağlayan sistemi bizim kullanımımıza sunar.
13) Session state
Asp session değiĢkenleri desteği çok sınırlıdır ve birden fazla web server dan oluĢan
sistemde session değiĢkenlerini hiç desteklemez. ASP.NET de ise olay tamamen değiĢiyor,
birçok session depolama metodunu destekler örneğin In-Process (asp ile ayni), out-ofprocess (session durumu baĢka bir bilgisayardaki Windows Servis ile sağlanır) ve SQL
Server’da. Out-of-process ve SQL Server seçenekleri web form desteği sağlar.
14) Güvenlik Desteği
Asp sadece IIS authentication metodlarını desteklerken ASP.NET daha geniĢ güvenlik
sistemini destekliyor örneğin IIS/Windows doğrulama sistemlerinden Basic doğrulama,
Digest doğrulama, Integrated Windows doğrulama, Form bazlı doğrulama ve Microsoft
Passport doğrulama. ASP.NET içerisinde yeni olarak Windows kullanıcı doğrulama (windows
authentication) sistemine ek olarak form bazlı kullanıcı doğrulama (forms-based user
authentication) sistemi geliĢtirilmiĢtir. Bu yeni sistemde çerez yönetimi (cookie
management) ve otomatik olarak doğrulanmayan kullanıcıların baĢka bir web sayfasına
gönderilmesi (automatic redirecting of unauthorized logins) gibi güzel özellikler
eklenmiĢtir. Ġzlemek, Debug, ve Bellekleme Desteği (Tracing, debugging and caching
support) asp sisteminde kodu izlemek ve BUG’lari bulmak bir derttir. Fakat ASP.NET
içerisinde bu sistem çok daha geliĢtirilmiĢ, adım adım debug olayı ve diğer trace ve debug
metotlarını desteklemektedir. ASP.NET bunlara ek olarak mükemmel bellekleme (caching
API) sağlamaktadır. Verileri bellekleme sistem output caching, data caching, dependent
caching ve fragment caching metodlarını destekler.
15) XML Bazlı Konfigürasyon
Asp içerisinde ise konfigürasyon bilgileri çok değiĢik yerlerde saklanıyordu. Örneğin,
IIS bilgileri IIS ****base (registry) de saklanmaktadır. Eğer COM/ COM+ bileĢenlerini
kullanıyorsanız, COM ve COM+ bileĢenlerinin bütün bilgileri registry ve COM+ Catalog da
saklanır. ASP.NET konfigürasyonu metin dosyaları ile yapılır. Bu metin dosyaları XML
dosyalarıdır. ASP.NET de XML ayrı bir önem kazanmıĢtır. ASP.NET de çalıĢan programı
kesmeden bu konfigürasyon dosyaları değiĢtirilebilir. ASP.NET bunu arka planda,
kullanıcıdan saklayarak halleder. Yeni bir web isteği geldiğinde ASP.NET worker process
(çalıĢan iĢlemci) yeni konfigürasyonla isleme devam eder.
16) XCopy Kurulum
COM bileĢenlerinden farklı olarak .NET bileĢenleri Windows registry’e kayıt
edilmesine gerek yoktur. Yapmamız gereken tek Ģey bileĢeni derlemek, ASP.NET yazılımının
bulunduğu klasörde BIN isimli bir klasöre ekledikten sonra bu derlediğimiz bileĢeni
kopyalamaktır. Gördüğünüz gibi artık registry ile uğraĢmak yok. Bu gerçekten Microsoft’un
uzun zamandır yapması gereken bir değiĢiklik idi.
17) Hosting Seçenekleri
Asp bir ISAPI programı olup IIS e bağlıdır.Buna karsın, ASP.NET ise .NET framework
üzerinde çalıĢır, böylece ASP.NET sayfaları bu nedenle IIS dıĢındaki web serverları
tarafından da sunulabilecektir.
18) Daha hızlı web uygulamaları
ASP.NET derlenmiĢ kod ve saklanma iĢlemi ile hız kazanıyor. Daha önceki ASP
sürümlerinde bir kullanıcı web sitesine girdiği zaman bilgisayar üzerinde anlık derlemeler
yapılırdı ve bu hız kaybına neden olurdu. Artık ASP.NET ile hazırlanmıĢ bir kod, bir
ziyaretçi tarafından hiçbir zaman ziyaret edilmese bile derleniyor. Saklama iĢlemiyle de
hafızaya bilgi depolanıp, bu sayede kullanıcılara verilerin daha hızlı yollanması
sağlanabiliyor.
ASP.NET ile programcılar sayfalarını her kullanımda yeniden aratmak yerine bir
kısmını "caching" yani tamponlama iĢlemi sayesinde daha hızlı eriĢilebilir hale
getirebiliyorlar. Bir diğer değiĢiklik ise ASP.NET ile veritabanındaki belirli verilerin
saklanabilir hale getirilebilmesi. Bu sayede çok değiĢmeyen bir veritabanını her seferinde
tekrar yüklenmek yerine, hızlı eriĢilebilir forma sokulmuĢ oluyor.
19) Güçlü veritabanı fonksiyonları
ASP gibi ASP.NET de programcıların veri tabanlarıyla etkileĢimli çalıĢabilen web
uygulamaları yapabilmesine izin veriyor. ASP.NET"in asıl avantajlı bir çok programlama
aracına imkan veren Nesne Merkezli (Object Oriented) programlama ile çalıĢması. Bu
sayede daha fonksiyonel ve daha hızlı tasarıma imkân sağlıyor.
20) Hafıza sızıntısı ve çökme koruması
ASP.NET teki en çok beğenilen yeniliklerin baĢında hafıza sızıntısı ve çökme koruması
özellikleri geliyor. Özellikle hafıza sızıntısı, çoğu kullanıcı tarafından pek bilinen bir konu
değilken, sistem yöneticilerini sıkıntıya sokan durumlardan biridir. ASP.NET ile bu hatalar
otomatik olarak düzeltilerek, kullanıcıların her zaman web sitesine ulaĢabilmesi sağlanıyor.
21) Çoklu dil desteği
Programcılar artık 25"ten fazla .NET dili ile ASP.NET"i kullanabiliyorlar. Bu dillerden
bazıları VB.NET, C# ve Jscript NET. GeniĢ dil desteği sayesinde birçok programcı web
uygulamalarını kolayca hizmete sunabiliyor.
22) .NET"in parçası olmak
.NET çatısı 3400"den fazla sınıftan oluĢan bir yapıya sahip, ASP.NET de .NET"in bir
parçası olduğu için neredeyse web uygulaması olarak yapılamayacak hiçbir Ģey yokmuĢ gibi
gözüküyor.
23) Programlar ve HTML artık aynı sayfada değil
Önceki sürüm ASP’lerde göze çarpan sorunlardan biri HTML sayfasında
programlamanın da görünmesiydi. Diğer bir deyiĢle, scriptler ve HTML aynı sayfadaydı.
Artık gösterilen kod ile script kodu ayrılmıĢ olduğundan, Microsoft bunun önüne geçmek için
bir önlem almıĢ gibi görünüyor.
Dezavantajları
1) Windows zorunluluğu
ASP.NET halen Windows iĢletim sistemi kullanan bir sunucu üzerinde yapılandırılmak
zorunda; kısacası platform bağımsız değil. ASP’de de olan bu sorunu çözmek için Linux
sistemlerinde çalıĢan birkaç ASP hosting sunucusu geliĢtirildiyse de, iĢin açıkçası pek
baĢarılı olabilmiĢ değil. ASP.NET de hali hazırda Windows ve IIS (Internet Information
Server)’a mahkûm görünüyor.
2) Eklenti krizi
ASP.NET kaynak olarak bedava gibi görünebilir ama programlama konusunda bilgili
değilseniz hazırlıklı olmanız gereken bir durum var, o da eklentiler. Bir iĢlemi yapmak için
gereken eklentiler genelde ücretli olarak satılıyor. Tabii saatlerce uğraĢtan sonra bedava
olan birkaç eklentiyi zor da olsa bulabilirsiniz.
3) Hosting maliyeti
Eğer dıĢarıdan hosting hizmeti alacaksanız biraz daha fazla para ödemeye hazırlıklı
olmanız gerekiyor. Çünkü genel olarak Windows hosting daha pahalı ki bu da normal olması
gereken bir fark.
HAFTA - 2
Visual Studio 2008 Tanıtımı
ASP.NET Tasarımı
Visual Studio ile ASP.NET Site oluşturma
ASP.NET kontrolleri
Sayfalar arası veri aktarımı
Visual Studio 2008
ASP.NET ile web sitesi tasarımı için Visual Studio kullanılır. Visual Studio 2008
çalıĢtırıldıktan sonra Menüden File – New – Web Site seçilir.
Resimde de görüldüğü gibi üstte oluĢturulacak projenin tipi belirlenir. Normalde
ASP.NET Web Site seçilir.
Location bölümünde ise web sitesinin bulunduğu konum belirlenir. Web sitesi ftp
konumunda, http konumunda olabilir. Bu konumlara bağlanılarak uzaktaki bir konumda olan
web siteleri de düzenlenebilir. Kendi bilgisayarımızda konumlandıracaksak File System
seçilir.
Language bölümünde ise ASP.NET web sitesini oluĢtururken kullanılacak programlama
dili seçilir. Burada Visual C# seçilmiĢtir.
Brows düğmesi ile de web sitemizi oluĢturacağımız konum belirlenir. Ok düğmesine
basılmasıyla Web sitesi belirtilen konumda hazırlanır.
Sol bölümde Toolbox (araçlar) yeralmaktadır. Orta kısım tasarım yapılan yerdir.
Sağda üstte Solution Explorer bulunmaktadır. Solution Explorer’de projede yer alan tüm
dosyalar ve klasörler listelenmektedir. Onun altında ise Properties bölümü yer almaktadır.
Tasarım kısmında seçilen nesnenin özellikleri gösterilmektedir.
Bir Web sayfası tasarımı üç farklı yerden yapılmaktadır. Örneğin Default.aspx dosyası
tasarımında: Solution Explorer’de Default.aspx’in altında bağlı olarak Default.aspx.cs
görülmektedir. Default.aspx.cs dosyası program kodlarının bulunduğu dosyadır.
Default.aspx ise html kodları ile sayfa tasarımını içermektedir.
Default.aspx açıldığında (html kodlarını içeren sayfa) farklı iki görünüm vardır.
Birincisi Design (Tasarım) görünümü. Bunda sayfa tasarımı tamamen görsel olarak
yapılmaktadır. Source (html kod) görünümde ise sayfanın ASP.NET için geliĢtirilmiĢ html
kodları görülmektedir.
Default.aspx.cs dosyasında ise C# dili ile yazılan ve asp kontrollerine ait program
kodlerı görülmektedir.
ASP.NET Kontrolleri
ASP.NET ile web sitesi tasarımında html kontrolleri istenirse kullanılabilir. Fakat ASP
kontrolleri geliĢmiĢ özelliklere sahip olduğu için tercih edilir. En çok kullanılan ASP.NET
kontrolleri aĢağıda verilmiĢtir.
Label: Sayfa üzerinde yazı yazmak için kullanılır. Normalde sayfa üzerine doğrudan da
yazı yazılabilir. Fakat Label kontrolü kullanılırsa program kodları ile yazı yazdırılabilir.
TextBox: ÇelıĢma zamanında kullanıcı tarafından bilgi giriĢine izin veren kontroldür.
Button: Tıklama ile çalıĢan ve belirli iĢlemlerin etkileĢimli olarak yapıldığı kontroldür.
LinkButton: Görünümü bir link gibidir, fakat etkileĢimli olarak çalıĢan bir buton gibi
davranır.
ImageButton: üzerinde resim görülen ve etkileĢimli buton gibi çalıĢan bir kontroldür.
HyperLink: sayfa üzerinde linkler vermeye yarayan kontroldür.
DropDownList: Açılır liste kutusu. Listeden sadece bir eleman seçilebilir.
ListBox: Bir listesi olan ve bu listeden eleman seçilebilen kontroldür.
CheckBox: Onay kutusudur.
CheckBoxList: Bir çok onay kutusunu bir grup olarak barındıran kontroldür.
RadioButton: Seçme kutusudur. Bunlardan sadece biri seçilebilir.
RadioButtonList: Eğer radiobutonlardan ayrı gruplar oluĢturmak istenirse, bu kontrol
ile grupar oluĢturulabilir.
Image: Sayfa üzerine resim eklenir.
FileUpload: Web sitesine dosya yükleme kontrolüdür.
MultiView: Duruma göre çoklu sayfa görünümü.
View: MultiView kontrolü ile kullanılır.
ToolBox DATA grubu: Bu grupta veritabanlarına
veritabanlarındaki bilgileri listeleme kontrolleri bulunmaktadır.
bağlanma
kontrolleri
ve
ToolBox Validation Grubu: Bir bilgi giriĢ formunda TextBox’lara girilen değerlerin
kontrollerini yapan ve doğru bilgi giriĢini zorlayan kontroller vardır.
ToolBox Navigation grubu: Menü ve site haritası hazırlanabilecek kontroller vardır.
ToolBox Login grubu: üye giriĢi ile ilgili kontroller bulunmaktadır.
ToolBox AJAX Extention grubu: ASP.NET sitesi içinde AJAX kullanımı ile ilgili temel
kontrolleri içerir.
Sayfalar Arası Veri Aktarımı
Web sitelerinin çalıĢma Ģeklinde Sunucu ve istemci vardır. Ġstemci sunucudan sayfayı
istemektedir. Ġstemcide sunucunun göndermiĢ olduğu sayfa görüntülenmektedir. Burada
girilecek veya tanımlanacak bir bilgi istemcide tanımlanır. Bundan sunucunun haberi olmaz.
Bir linke tıklanarak diğer sayfaya geçildiğinde tüm tanımlamalar istemcide bulunduğu için
sunucu, istemcideki tanımlara göre iĢlem yapamaz. Fakat yapılan tanımlamaların diğer
sayfalara aktarılması ve diğer sayfalarda kullanılması gerekir. Bu iĢlemi web sitelerinde
gerçekleĢtirmek için değiĢik yöntemler kullanılmaktadır.
1- Web sayfasındaki formu Post
Request.Form ile değerleri almak.
metodu
ile
diğer
2- Web
sayfalarını
çağırırken
RequestQuerystring kullanma.
adres
satırında
sayfaya
göndermek
parametre
ve
gönderme,
3- Cokie kullanma
4- Application nesnesinde değiĢken tanımlama
5- Session nesnesinde değiĢken tanımlama
Web ortamında sayfaların her post-back olmasında ilgili sayfanın yeni bir örneği
oluĢturulur. Peki, yeni bir örneğinin oluĢması ne demek?
1.Sayfamızdaki bilgilerin
2.Sayfadaki kontrollerin (TextBox, Grid, CheckBox, Button vb.)
tamamen kaybolması demektir. Örneğin kullanıcı sayfamızdaki bir TextBox’a veri
girdiğinde, artık biliyoruz ki bu veri tamamen kaybolacaktır. Ancak bunu deneyip
yaptığımızda gerçek ortamda TextBox’taki verinin kaybolmadığını görüyoruz.
Peki, bu nasıl oluyor?
Geleneksel Web Programlamanın bu sınırlılığının üstesinden gelmek için .NET
platformu bize bazı sayfa-tabanlı ve uygulama-tabanlı seçenekleri sunmakta. Bunlar:
1.View State
2.Control State
3.Hidden Fields
4.Cookies
5.Query Strings
6.Application State
7.Session State
Bu seçeneklerden (View State, Control State, Hidden Fields, Cookies ve Query
Strings) sayfamızdaki bilgileri ve kontrol bilgileri bir takım yollarla kullanıcının kendi
bilgisayarında (Client-Based State Manegement) saklarlar. Geri kalan seçenekler ise
(Application State, Session State ve Profile Property) bu bilgileri uygulama tarafında yani
sunucuda (Server-Based State Management) saklarlar.
.NET platformunun bizlere sunduğu bu seçenekleri incelersek:
View State
Post-Back sırasında default olarak sayfa ve kontrol bilgilerini tutan bu yapı, dictionary
mantığıyla çalıĢır. Her bir kontrolün ve sayfa bilgisinin değerleri “Key”, “Value” Ģeklinde,
hidden field’lar olarak korunur. Sayfa sunucuya gönderildiğinde, gelen isteğe göre iĢlem
yapıldıktan sonra sunucu view-state değerine göre sayfayı tekrardan render eder ve
client’a tekrar gönderir. Böylece sayfamızdaki verilerimizi kaybetmemiĢ ve sunucuya
gitmeden önceki halleriyle tekrar tarayıcımızda görürüz.
View state yapısında kendi verilerimizi de saklayabiliriz. Dictionary mantığıyla
çalıĢtığını daha önce belirtmiĢtik. AĢağıdaki gibi basit bir Ģekilde View State yapısını
kullanabilirsiniz
View State e veri ekleme:
ViewState.Add(”[Key]“,”[Value]“);
Eklenen bir veriyi alma:
ViewState["[Key]“].ToString();
Bu yöntemi kullanmanın avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük
getirmez
2.Kolay uygulanabilirlik: Ekstra kodlama gerektirmez. Zaten default olarak kullanılan
metoddur
3.Güvenlik: View-State değerleri ĢifrelenmiĢ bir Ģekilde saklandıkları için Hidden
field’lara göre daha güvenlidirler
Dezavantajları:
1.Performans düĢüklüğü: View-State değerleri sayfamızla beraber sunucuya gittiği için
view-state de büyük boyutta veri saklamak sunucuya gidiĢ-geliĢ süresini uzatacaktır.
özellikle mobil uygulamalarda büyük veriler büyük performans kaybı demektir.
2.Potansiyel Güvenlik Riski: Veriler ĢifrelenmiĢ bir Ģekilde saklansa bile sayfa
kaynağını görüntülediğimizde bu verileri Ģifreli halde bile olsa görebiliriz. Bu durum güvenlik
riski oluĢturabilir.
Control State
.NET ControlState özelliği post-back’ler arasında custom kontrol verilerini tutmamıza
olanak sağlar. Örneğin sayfamızda farklı içerikler gösteren farklı tab yapılarımızın olduğunu
düĢünün. Hangi tabın seçili olduğunu post-back iĢleminden önce bilmek istiyorsak bu yapı
uygun bir yapıdır. Bu senaryo ViewState ile de yapılabilir, ancak ViewState sayfa bazında
kapatılabildiği için uygulamamızda aksaklıklara neden olabilir. ControlState ise ViewState
gibi kapatılamaz.
peki nasıl kullanılır?
Veri ekleme:
PageStatePersister.ControlState = “[Data]”;
Veri alma:
string value = PageStatePersister.ControlState.ToString();
Kullanım Avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük
getirmez
2.Güvenilirlik: ViewState gibi kapatılamadığından kullanımı daha kesin sonuçlar verir.
3.Çok Yönlülük: Control state tekli verilerin nasıl ve nerede saklanması konusunda
custom adaptörler yazılabilir
Dezavantajları:
1.Programlama bilgisi gerektirir: ASP.NET kullanım için limitli imkan sağlasa da, tam
kullanım için kodlama gerektirmektedir.
Hidden Fields
Hemen hemen hepimizin bildiği bir state yönetim aracıdır. Normal bir HTML kontrolü
olarak sayfamıza ekleyebilirsiniz. Veri saklama ve veri alma, normal bir TextBox’tan
farksızdır.
Kullanım avantajları:
1.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük
getirmez
2.Yaygın Destek: Hemen hemen tüm tarayıcılar hidden field desteği vermektedir.
3.Kullanım kolaylığı: Standart HTML kontrolü olarak sayfanıza ekleyebilirsiniz.
Dezavantajları:
1.Güvenlik Riski: Sayfa kaynağı direkt olarak görüntülenirse hidden field değerleri
açıkça görülebilir. Değerler Ģifrelenebilir ancak Ģifrelenmesi ve Ģifrelerin tekrar çözülmesi
iĢlemi ekstra kodlama demektir.
2.Basit Depolama Mantığı: Hidden field’larda rich değerler saklayamayız. Daha çok
basit veriler saklanması için tasarlanmıĢtır.
3.Performans Kaybı: Büyük veriler saklayamadığımız gibi, aĢırı kullanımı durumunda
sayfada HTML kontrolü olarak saklandığı için performans kayıplarına neden olacaktır
Cookies (Çerezler)
//myCookie isminde yeni nesne oluştur
HttpCookie MyCookie = new HttpCookie("SonZiyaret");
//now isminde datetime tipinde nesne oluşturup o anki zaman aktar
DateTime now = DateTime.Now;
//myCookie’nin değeri belirleniyor
MyCookie.Value = now.ToString();
//myCookie’nin süresi belirleniyor.
MyCookie.Expires = now.AddHours(1);
Ömrü 1 saat olarak ayarlanıyor
//myCookie istemci bilgisayara ekleniyor.
Response.Cookies.Add(MyCookie);
Cookie Okuma
HttpCookie myCookie = Request.Cookies.Get("SonZiyaret");
degisken = myCookie.Value;
Kullanım Avantajları:
1.Konfigüre Edilebilme: Cookie’lerin ayarlanabilir birçok özelliği vardır. Ġsim, değer,
zaman aĢımı süresi vb.
2.Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük
getirmez
3.Veri Devamlılığı: Client bilgisayarlarda veri bütünlülüğünü en yüksek oranda garanti
edebilen yapılardır.
4.Kullanım kolaylığı: text tabanlı key-value mantığıyla çalıĢırlar
Dezavantajları:
1.Boyut limiti: Bir çok browser cookie boyutu olarak 4096 byte sınırını getirmektedir.
2.Kullanıcı Kontrolü: Bazı kullanıcılar cookie alımını tarayıcılarından kapatabilirler, bu
da cookie kullanımını olanaksız hale getirir
3.Güvenlik Riski: Cookie kullanıcılar tarafından görülebilmektedir. Bu da güvenlik
açıklarına neden olabilir. Cookie değerleri manuel olarak Ģifrelenebilir, ancak bu da ekstra
kod demektir
HAFTA - 3
QueryString
Application
Session
QueryStrings
QueryString’lerde yine en çok aĢina olduğumuz state yönetim araçlarındandır.
URL’lerin ardına eklenen kullanıcılar için çok da bir anlam ifade etmeyen, yazılımcılar için
anlamlı bilgilerdir.
Örneğin:
xyz/index.php?option=com_comprofiler&task=userProfile&user=142
adresindeki “?” iĢaretinden sonra gelen “option”, “task” ve “user” kelimeleri birer
Query String anahtarlarıdır. Bu anahtarlar kullanıcılar için fazla bir anlam ifade etmez
ancak yazılımcılar için çok anlamlıdırlar.
Kullanımı:
xyzindex.php?option=com_comprofiler
Her iki kullanımda aynı iĢi görmektedir.
Veri Alma:
if (Request["[Key]“] != null)
{
string value = Request["[Key]“].ToString();
}
Kullanım Avantajları:
1. Sunucu kaynaklarını yormaz: Client-Based olduğu için sunucumuza artı bir yük
getirmez
2. Yaygın Destek: Hemen hemen tüm tarayıcıların Query String iler veri taĢıma
desteği vardır.
Dezavantajları:
1. Güvenlik Riski: Query String ile taĢınan veriler clear text olarak tüm kullanıcılar
tarafından görülebilmektedir. Bu nedenle değerli veriler kesinlikle querystring ile
taĢınmamalıdır. Bunun yerine Hidden field veya diğer yapılar kullanılabilir.
2. Kapasite Limiti: Bazı tarayıcılar URL uzunluklarını en fazla 2083 karakter olarak
sınırladıklarından istenilen uzunlukta veri taĢınamıyor.
Application/Uygulama
Asp'yi yazanlar ASP teknolojisinin kullanıldığı bir siteyi uygulama programı olarak
düĢünmüĢler ve bu siteye girecek herhangi biri ziyaretçiyi de bu programı kullanan bir
kullanıcı olarak düĢünmüĢler. Yani sitenize her bir kullanıcı girdiğinde bir onun için bir
program açılıyor gibi düĢünülebilir.
Web sitemiz sunucuya yüklendiğinde bir Application (uygulama) çalıĢır. Web sunucu
kapatılana kadar bu uygulama çalıĢır. Bu uygulama kapatılana kadar değiĢkenler
saklanmaktarı. Sunucu taraflı veri saklama yöntemidir.
ASP.NET’te Application nesnesinde tanımlanan bir değiĢkeni ve değerini tüm
ziyaretçiler görür. Application’da tanımlanan değiĢkenin ömrü, Web sunucunun çalıĢma
süresi kadardır. Web sunucu durduğunda Application değiĢkenleri silinir.
Application değiĢken tanımlama
Application.Add("Okul", TextBox1.Text);
Application değiĢken değerlerini okuma
degisken = Application["Okul"].ToString();
Session/Oturum
Bu nesne Application nesnesi ile en çok karıĢtırılan nesnedir. Çünkü ikisi de
tanımlamalarda aynı özellikleri taĢır.
Session Oturum demektir. Web Sitesine her bağlanan kiĢi için Application’da bir
oturum oluĢturulur. Session belirli bir süre için oluĢturulur. Bu süre varsayılan olarak 20
dakikadır. Her istemci için ayrı ayrı oluĢturulan session o istemci bağlantısını kesene kadar
veya session ile ilgili hiçbir iĢlem yapmadan 20 dakika geçtiğinde hafızadan silinir.
Dolayısıyla session’da tanımlanan bir değiĢkene sadece o oturumu baĢlatan kiĢi oturum
açık kaldığı sürece ulaĢabilir. Session sunucu taraflı çalıĢan bir sistemdir. Bu nedenle
değiĢkenler sunucuda saklanır.
Session’da değişken oluşturma:
Session.Add("Yetki", 3);
OluĢan oturumda (Session) Yetki isminde bir değiĢken oluĢturulur ve 3 değeri bu
değiĢkene aktarılır. Daha sonra web sitemizin herhangi bir sayfasında bu değeri
okuyabiliriz.
degisken = Session["Yetki"];
Session süresinin belirlenmesi
Session nesnesi varsayılan olarak 20 dakika için oluĢturur. Ġstemci web sitesinden
istekte bulunmaya devam ettiği sürece oturum kapatılmaz. Eğer istemci 20 dakika herhangi
bir iĢlem yapmaz ise oturum kapatılır. Oturumun sona ereceği süre aĢağıdaki örnekteki gibi
dakika cinsinden verilebilir.
Session.Timeout = 30;
Tüm session nesnelerinin değerini sıfırlama
Sitemizde öyle bir an olur ki session nesnelerine yüklediğimiz tüm verileri bir defada
silmek isteyebiliriz.
Session.Abandon();
HAFTA - 4
ASP.NET Kavramlar: Respones, Request
UserControl
ASP.NET Kavramlar
Request/Talep
Adından anlaĢabileceği gibi veri talep etmek için kullanılır. Gerek formlarda, gerek
sorgulardan gerekse cookie’lerden verileri almak için kullanırız.
Kısaca Ġstemciden veri almak için kullanılır.
Bu nesne ile kullanıcıdan birçok Ģekillerde veri alabiliriz. Tabi bunun için Request
nesnesinin metotlarını kullanacağız. ġimdi bunları görelim.
1-Request.Form
Kullanıcının doldurduğu herhangi bir form öğesinden veri almak için kullanılır. Aldığınız
bu veriyi sayfanızda herhangi bir yerde kullanabilirsiniz.
Degisken = Request.Form("form_oge_adi");
Ģeklinde veriyi alabilir ve bir değiĢkene atayabilirsiniz.
Not: Yukarıdaki örnekte bulunan form_oge_adi denen isim formdaki öğenin adıdır.
2-Request.QueryString
sayfa.aspx?degisken=deger gibi bir url’deki değiĢken adlı değiĢkenin değerini almada
kullanılır.
Degisken = Request.QueryString("degisken_adi");
Ģeklinde veriyi alabilir ve Request.Form'daki gibi bir değiĢkene atanabilir.
Eğer
birden
fazla
değiĢken
url
ile
yollanacak
ise
sayfa.asp?degisken1=deger&degisken2=deger Ģeklinde yollanıp yukarıdaki gibi alınabilir.
3-Request.ServerVariables
Server değiĢkenlerinden veri alma. Hep kullanıcıdan değil de bazen sunucudan veri
almamız gerekir, mesela o sırada çalıĢan asp sayfasının adresini buradan alabilirsiniz.
Request.ServerVariables("degisken_adi")
Ģeklinde bir kod ile değeri alabilirsiniz ve bir değiĢkene yükleyebilirsiniz. degisken_adi
adlı bölümde aĢağıdaki değerler kullanılabilir.
Değişken
ALL_HTTP
ALL_RAW
APPL_MD_PATH
APPL_PHYSICAL_PATH
AUTH_PASSWORD
Açıklamalar
İstemci tarafından gönderilen http Header altında yer alan tüm değişkenler ve değerlerini
getirir.
http Header altında yer alan tüm değişkenler ve değerlerini getirir. Başlarında http öneki
olmaz.
Uygulamanın Metabase yolunu verir
Uygulamanın fiziksel yolunu verir
Kullanıcı sunucuya basit yetkilendirmeyle bağlanıyorsa parolayı getirir.
AUTH_TYPE Auth_type
AUTH_USER
CACHE_URL
CERT_COOKIE
CERT_FLAGS
CERT_ISSUER
CERT_KEYSIZE
CERT_SECRETKEYSIZE
CERT_SERIALNUMBER
CERT_SERVER_ISSUER
CERT_SERVER_SUBJECT
CERT_SUBJECT
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
HEADER_ <HeaderName>
HTTP_ <HeaderName>
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_CONNECTION
HTTP_COOKIE
HTTP_HOST
HTTP_REFERER
HTTP_URL
HTTP_VERSION
HTTPS
HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE
HTTPS_SERVER_ISSUER
HTTPS_SERVER_SUBJECT
INSTANCE_ID
INSTANCE_META_PATH
LOCAL_ADDR
LOGON_USER
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PORT_SECURE
Bu değişken yalnızca Temel kimlik doğrulama kullanılır kullanılabilir.
Yetkilendirme metodunu getirir.
Kullanıcı sunucuya basit yetkilendirmeyle bağlanıyorsa adını getirir.
ISAPI uygulamalarda kullanmak için.
Bağlantıda yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik.
Kullanıcının sertifikası varsa bu değer 1 olur.
sertifikası varsa veren kurum(O = MS, OU = IAS, CN = kullanıcı adı, C = USA).
Güvenli Yuva Katmanı (SSL) içinde bit sayısı bağlantı anahtar boyutu.
Örneğin, 128.
SSL’deki deki özel anahtarın bit sayısı. Örneğin, 1024.
Istemci sertifikası seri numarası
Sunucu sertifikasının alındığı yer
Sunucu sertifikasının Konu alanı.
Istemci sertifikanın Konu alanı.
Müşteri tarafından verilen içerik boyutu.
Içerik veri türü.
Gelen bilgilerin GET veya POST metoduna göre türünü gösterir.
Sunucunun kullandığı CGI tipi ve sürümü.
Değeri başlık <HeaderName> saklanır.
Herhangi bir başlık bu tabloda listelenen başka ServerVariables koleksiyonu için sırayla
"HEADER_" tarafından değeri önünde olmalıdır.
Değeri başlık <HeaderName> saklanır.
Herhangi bir başlık bu bu tabloda listelenen başka ServerVariables koleksiyonu için sırayla
"HTTP_" tarafından değeri önünde olmalıdır.
Kabul biçimlerinin bir listesini içerir Kabul başlığı döndürür.
Kabul kodlama türleri döndürür.
Bir dize içeriğinin görüntülenmesi için kullanılacak dil.
Bir dizenin bağlantı türü.
Bu sitenin içerdiği İade çerez.
Web sunucusunun adını verir
geçerli sayfayı bir HTML <a> etiketi kullanarak Döndürür
URL’nin kodlanmış şeklini verir, örneğin, "/ vdir / default.asp? QueryString".
Adı ve istek SERVER_PROTOCOL protokolü üzerinden (ham formu) sürümü.
Ziyaretçi ile bağlantının güvenli olup olmadığını gösterir.
SSL bağlantısı içinde bit sayısı Örneğin, 128.
Sunucu sertifikası private key deki bit sayısı. Örneğin, 1024.
Sunucu sertifikasının Issuer alan.
Sunucu sertifikasının Konu alanı.
Sunucunun aynı andaki çalışma sayısı.
Sunucunun çalıştığı meta yolu.
İstemcinin IP numarası.
İstemcinin kendi sistemindeki oturum açma adı.
Çalışan sayfanın yolu veya adı.
Çalışan sayfanın uzun yolu veya adı.
Adres satırında Query string kısmını verir
Bu istemcinin IP adresini verir.
Bu istemcinin bilgisayarın adını verir
TCP bağlantısının istemci bağlantı noktası numarası.
İstemcinin gerçek adı.
Verilerin elde edildiği metot.
ASPX sayfasının URL’deki adı.
Sunucunun ana bilgisayar adı.
İstekte bulunurken kullanılan port numarası.
Portun güvenliliğini gösterir. Güvenli ise 1 değilse 0.
SERVER_PROTOCOL
SERVER_SOFTWARE
URL
Sunucudaki http’nin sürümü.
Web sunucusun adı ve sürümü.
Aktif olan URL’yi gösterir.
Response/Karşılık
Ziyaretçinin browser’ına gönderilen verilerin hepsini kapsar. Ayrıca cookie’lerde
Response öğesinin özellikleri arasında yer alır.
Kısaca bu nesne ile istemciye veri yollarız.
Response nesnesini en çok ziyaretçinin tarayıcısına bir Ģey yazdırmak için kullanırız.
Tabii sadece bu değil bu nesne ile web sayfamızın birçok özelliğini belirleriz.
Response nesnesini sadece bu haliyle kullanmayız bu nesneyi de birçok ASP kodunda
olduğu gibi "." yazıp sonra özelliğini yazarız. ġimdi bunların neler olduğunu ve ne iĢe
yaradığını görelim.
1-Write (Yazdır)
Response nesnesinin en çok kullandığımız özelliğidir. Bu kodu ziyaretçinin ekranına bir
Ģeyler yazdırmakta kullanırız.
Response.Write("Yazı yazdırıyoruz");
2-Buffer (Tampon)
Bu özellik "TRUE" olarak ayarlandığında asp sayfasının tüm kodlarının yorumlanması
bitmeden tarayıcıya çıktı yollanmasını engeller. Bu sayede çok iĢlem gerektiren sayfalar bu
yöntem ile tamamen yorumlanınca çıktısı tarayıcıya yollanır. Veya sizin asp sayfanız
yorumlanması bitince ziyaretçiyi baĢka bir siteye yolluyor bunun için tüm kodların önce
yorumlanması gerekir o zamanda bu özellik iĢinize yarayacak.
Response.Buffer = true;
3-Flush (Hemen Gönder)
Kısaca Buffer özelliğinin tam tersi bir iĢlem yapar. Sayfa yorumlandıkça çıktı
tarayıcıya yollanır.
Response.Flush
4-Clear (Temizle)
Buffer özelliğini kullandığınız zaman sayfa yorumlanır, yorumlanan kısım geçici bir
alanda tutulur. Clear özelliği ile de bu alandaki tüm veri silinir. Ama bu özellik neden iĢimize
yarayabilir? Sitemizde alıĢveriĢ yapan bir kullanıcı, vazgeçtiği zaman verdiği bütün bilgileri
silmek en iyisidir. O zamanda bu özellik yardımımıza koĢacaktır
Response.Clear();
5-Expires (Süresi Geçme)
Bir internet sitesine girdiğiniz zaman tarayıcımız bu sitedeki resimleri ve kodları
cache denen (bilgisayarımızdaki Temporary Internet Files klasörü) bir alanda tutar.
Böylece daha sonra siz bu siteye tekrar girmek istediğinizde tarayıcı sayfayı buradan
yükler. Ama kullanıcılar gidip buradan sayfanızın kodlarını görebilir ve bizim asp sayfamızda
önemli kodlar olabilir veya bazı Ģifreler bu sayfada tutuluyor olabilir, o zaman bu sayfanın
cache'e alınması pekiyi olmaz. Veya sitemiz çok sık yenileniyor ise kullanıcı eski halini
görüyor olacak. Bunun için biz bu özelliği kullanarak sayfamızın cache'te ne kadar
tutulacağını belirleyebiliriz.
Response.Expires=10;
Buradaki 10 dakika olacaktır. Bu sayıyı 0 yaparsanız hiç cache'e alınmaz.
6-End (Son)
Sayfamızda belli durumlar sonucunda kullanıcıya karĢılık vermemesini (yani küsmesini )
sağlayabiliriz. Bu durumda o ana kadar yorumlanan bütün kodlar tarayıcıya ulaĢır ve ondan
sonraki hiçbir kod yorumlanmaz, buna HTML de dâhil. Ayrıca bu özellik ile Buffer özelliğiyle
geçici alanda tutulan tüm veri ziyaretçinin tarayıcısı ile buluĢur.
Response.End
Web User Control
Web User Controlleri bir nevi diğer web programlama dillerindeki include dosyalar gibi
düĢünebilirsiniz. OluĢturduğunuz bir Web User Controlü sayfanızın isteğiniz yerine koyar
ve orada onun görünmesini sağlayabilirsiniz. OluĢturulan bir web user control birçok defa
aynı veya farklı sayfalarda kullanılabilir.
Özellikleri
Web user controller proje içerisinde oluĢturulan ascx uzantılı dosyalardır. Bu dosyalar
içerisinde daha önceden var olan HTML ve server componentlerini istediğimiz gibi
kullanarak yeni bir görünüm oluĢtururuz. User Controller VS.NET toolbox’ında yani araç
çubuğunda bulunmazlar. Onları herhangi bir projeye eklemek için Solution Explorer’dan o
ascx uzantılı dosyayı tutarak sayfada istenilen yere bırakılması yeterlidir. Web User
Controller, .NET’in diğer kontrollerine benzemez.
HAFTA - 5
Master page
Örnek site tasarımı
Master Page
Internet sitelerini göz önüne aldığımızda, siteye ait sayfaların sıklıkla aynı Ģablonları
kullandığını görürüz. Özellikle, header, footer, navigasyon ve advertisement alanları,
çoğunlukla siteye ait tüm sayfalarda aynı yerlerde kullanılır. Bu, siteye ait sayfaların
standart olarak aynı görünümde olmasını sağlamakla kalmaz, değiĢen içeriğinde ortak bir
Ģablon üzerinde durmasına imkân tanır. Peki, Asp.Net 2.0’ın bu kullanım için getirdiği
yaklaĢıma gelene kadar, sayfalarda ortak olarak kullanılan ve tasarımsal olarak sayfa
koordinatlarında aynı yerlerde yer alan bu unsurlar hangi teknikler ile oluĢturulmuĢtur?
Html’in ilk zamanlarında, bu tarz iĢlemleri gerçekleĢtirmek için, ortak olan alanlar
kopyalanarak diğer sayfalara yapıĢtırılırdı. Ya da ana Ģablonu ihtiva eden bir sayfadan diğer
sayfalar "save as" metodu ile oluĢturulur ve içerikleri değiĢtirilirdi. Bu tekniğin en büyük
dezavantajı, Ģablondaki herhangi bir değiĢikliğin diğer sayfalara yansıtılması sırasında
ortaya çıkmaktadır. Nitekim 100’lerce alt sayfaya aynı Ģablonu uygulamıĢsak bu gerçekten
büyük bir problemdir.
Çözüm Asp ile gelmiĢtir. Asp, include takılarını kullanarak, sayfalarda tekrar eden
içeriklerin kolayca kullanılabilmesini ve değiĢikliklerin tüm sayfalarda görünebilmesini
sağlamıĢtır. Ancak elbette ki include takısının da bir takım sorunları vardır. Bunlardan
birisi, tasarım zamanında include takısının iĢaret ettiği içeriğin görünememesidir.
Dolayısıyla sayfanın bütünün nasıl göründüğünü inceleyebilmek için mutlaka çalıĢtırmak
gerekmektedir. Diğer yandan, include tekniği takılar üzerine kurulu olduğundan, özellikle
açık unutulan takılar sayfalarda istenmeyen Html çıktılarının oluĢmasına yol açmaktadır.
Asp.Net 2.0, Master Page yaklaĢımı ile yukarıda bahsedilen dezavantajları ortadan
kaldırmayı baĢarmıĢtır. Bir Master Page, uygulandığı diğer aspx sayfalarının nasıl görünmesi
gerektiğine karar veren bir Ģablon gibidir. Ancak, sağladığı ContentPlaceHolder bileĢeni
sayesinde, Master Page’leri uygulayan diğer aspx sayfalarının, istenilen içeriğe sahip
olmasını da sağlamaktadır. En güzel yanı ise, normal bir aspx sayfası gibi tasarlanabilmesi,
yani html, image, server control gibi üyeleri içerebilmesidir. Bunlara ek olarak, olay güdümlü
programlama modelini de destekler. Dolayısıyla bir Master Page aslında bir aspx
sayfasından farksızdır.
Ancak asıl fark, bir Master Page bir aspx sayfasına uygulandığında ortaya çıkar.
Master Page’i uygulayan bir aspx sayfası tarayıcıda açıldığında tarayıcıya gelen sayfa,
Master Page ile aspx sayfasının birleĢtirilmesi sonucu ortaya çıkan baĢka bir aspx
sayfasıdır. Bu, .NET Framework’ün getirdiği partial class tekniği sayesinde
gerçekleĢebilmektedir. Bunun, Master Page’i uygulayan aspx sayfalarına getirdiği değiĢik
kodlama etkileri de vardır.
Örnek Site Tasarımı
AĢağıdaki tabloda içeriği belirtilen bir web sitesini Master Page kullanarak
tasarlanacaktır.
NORMAL WEB










Ana.master
Üstte Banner
Üstte site haritası
Solda Üye Girişi
Solda Menü
Ana Sayfa
Tanıtım
Tanıtım ile yan yana yeni duyurular
Duyuru Sayfası
Duyurular Listelenir ve içerikleri gösterilir
ĠletiĢim Sayfası
Mesaj Panosu (Site yöneticisine mesaj bırakma)
Resim Galerisi
Resimler kategorilere göre listelenecek. (küçük
resimler ve kısa açıklaması, tıklanınca
büyüyecek ve altında uzun açıklaması olacak
Yeni Üyelik
Yeni üye kaydı
YÖNETİM WEB









Yonet.master
Üstte yöneticinin Adı soyadı
Üstte bir yatay menü
İçerik bölümü
Tanıtım yönetimi
Kişisel tanımını düzenleme
Duyuru Yönetimi
Duyuru ekleme, düzenleme işlemleri
ĠletiĢim Yönetimi
Gelen mesajlar okunup geri dönüş yapılabilir.
Resim Galeri Yönetimi
Resim kategorileri oluşturulabilecek
Resimleri ve açıklamalarını düzenleyebilecek,
ekleme yapabilecek
Üye Yönetimi
Siteye üye olanların kontrolü ve yönetimi
AĢağıdaki Ģekilde Master Page sayfasının tasarımı görülmektedir. Normal kullanıcıların
göreceği tasarım için Ana.master isimli, yöneticilerin görebileceği tasarım için da
Yonet.master isimli MasterPage sayfaları tasarlanacaktır
Ana.Master
BANNER
Site Haritası
Üye Girişi
İÇERİK
MENÜ
Hazırlayan
Yonet.Master
Üye adı soyadı
Yatay Menü
İÇERİK
Böyle bir web sitesini tasarlamak için aĢağıdaki iĢlem sırasını izleyiniz.
İŞLEM SIRASI
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Öğrenci numaranız ile klasör oluştur. (0914113000.web)
VS2008 ile bu klasöre web sitesini oluştur.
Default.aspx sayfasını sil.
Yukarıdaki şekle uygun olarak Ana.master MasterPage’sini oluştur.
Ana sayfayı Ana.master ile oluştur (Default.aspx)
Duyuru sayfasını Ana.master ile oluştur (Duyuru.aspx)
İletişim Sayfasını Ana.master ile oluştur (Iletisim.aspx)
Resim Galerisi sayfasını Ana.master ile oluştur (ResimGalerisi.aspx)
Yeni Üyelik sayfasını Ana.master ile oluştur (uyelik.aspx)
Yönetim için Yonet.master MasterPage’sini oluştur (Yonet.master)
Tanıtım yönetimi sayfasını Yonet.master ile oluştur (y_tanitim.aspx)
Duyuru yönetimi sayfasını Yonet.master ile oluştur (y_duyuru.aspx)
İletişim yönetimi sayfasını Yonet.master ile oluştur (y_iletisim.aspx)
Üye yönetimi sayfasını Yonet.master ile oluştur (y_uye.aspx)
Resim Galerisi yönetimi sayfasını Yonet.master ile oluştur (y_resgimGalerisi.aspx)
Site içinde UserControl isminde alt klasör oluştur (UserControl)
UserControl alt klasörü içinde menü için user control oluştur. Basit olarak ana sayfalara linkler verilsin
(menu.ascx)
18. Ana.master Master Page’sine menü user controlünü ekle
HAFTA - 6
Yeni üyelik
Validation kontrol
Üye Giriş Sistemi
MultiView, View, HyperLink, LinkButton kontrolleri
Yeni Üyelik Formu Tasarımı
Web sitesine üyelik iĢlemi olabilmesi için yeni üye olan kullanıcıların bilgileri bir veri
tabanı ortamında saklanmalıdır. Bunun için öncelikle web sitesinin App_Data klasöründe bir
veri tabanı dosyası oluĢturulması gereklidir. Basit ve kullanımı kolay olduğu için Access veri
tabanı kullanılabilir. Fakat kapasite ve iĢlevsellik bakımından SQL server veri tabanı
kullanarak site tasarımına devam edilecektir. Kod yazımında ve sayfa tasarımında hangi veri
tabanının seçildiğinin çok fazla bir önemi yoktur. Sadece değiĢen Connectionstring
nesnesidir. Diğer kısımlar aynı Ģekilde yazılır. Diğer veri tabanı yönetim sistemleri de
kullanılabilir. Kod kısmında sadece Connectionstring değiĢikliğe uğrayacaktır. Diğer
kodlamalar tamamen aynı kalacaktır.
App_Data klasörüne veri.mdf isimli bir veri tabanı dosyası oluĢturarak aĢağıda Ģeması
verilen tabloyu Uye ismi ile oluĢturunuz.
Alan Adı
uyeNo
adi
soyadi
ePosta
web
meslek
kullaniciAdi
Parola
uyelikTarihi
sonZiyaret
ziyaretSayisi
onay
Alan Tipi
Otomatik Sayı
Metin(15)
Metin(15)
Metin(100)
Metin(100)
Metin(100)
Metin(15)
Metin(15)
Tarih/Saat
Tarih/Saat
Uzun Tamsayı
Evet/Hayır
SQL Server Alan Tipi
int, Identity=Yes
nvarchar(15)
nvarchar(15)
varchar(100)
varchar(100)
nvarchar(100)
nvarchar(15)
nvarchar(15)
datetime
datetime
int
bit
Özellik
Birincil Anahtar
Boş geçilemez
Boş geçilemez
Boş geçilemez
Boş geçilemez, Sıralı (yineleme yok)
Varsayılan Değer = Date()
Varsayılan Değer = 0
Varsayılan Değer = Hayır
Daha önceden siteye eklenmiĢ olan uyelik.aspx sayfası açılarak Yukarıda tasarımı
yapılan Üye tablosuna göre sayfa tasarımı yapılacak.
Validation Kontrolleri
Web sayfalarında en önemli bir konu bilgi giriĢi ve bunların kontrollerini yapan
kontrollerdir.
Kullanıcıların hatasız ve eksiksiz olarak formların doldurulmasında önemli rol
oynamaktadır. Ayrıca bu kontrollerin çalıĢması için Internet Explorer 4 ve üstü olması
gerekmektedir.
Required Field Validator
Kontrol içerisine bir değer girilip girilmediğini kontrol eder. AtamıĢ olduğumuz kontrol
boĢ geçilemez.
Range Validator
Belirlediğimiz iki değer arasında kontrol eder. Örneğin yaĢ aralığı için kullanılabilir.
Reguler Expression Validator
Karakter kontrolleri yapar. Mail adresinde @ iĢareti gibi kontrollerde kullanılır.
Compare Validator
Ġki giriĢ kontrolü arasındaki değeri, tipini veya dosyanı eĢitliğini kontrol eder. Custom
Validator Validation için kendi kodumuzu yazmaya izin verir.
Yeni Üyelik Başvurusu
Yeni üyelik butonuna basılınca üye bilgileri veri tabanına eklenecektir. Bunun için
aĢağıdaki kodları uyelik.aspx sayfasında Button1_click içine yazınız.
Üye Giriş Sistemi
Üye giriĢ sisteminde iki farklı tasarım vardır. Birincisinde Kullanıcı Adı ve Parola
sorularak giriĢ yapılır. Ġkincisinde ise giriĢ yapıldıktan sonra “HoĢgeldiniz!” vb mesajların
yer aldığı ve oturumu kapat ile ilgili butonun bulunduğu görünümdür.
Ġki farklı görünüm olan durumlarda MultiView kontrolü kullanılır. Sayfa üzerine
Multiview kontrolü yerleĢtirildikten sonra kaç farklı tasarım var ise o sayıda Multiview
kontrolü içine View kontrolleri eklenir.
Üye giriĢ sistemi tasarımı
Ġlk görünümde Yeni üyelik linki HyperLink kontrolü ile eklenmiĢtir. Bu kontrolün
NavigateURL özelliğine bağlanmasını istediğimiz sayfanın adı yazılır (Uyelik.aspx).
Ġkinci görünümde Oturumu Kapat linki için ise LinkButton kontrolü eklenir. Bu kontrol
bir link gibi görünür ve bir button kontrolü gibi çalıĢır.
MultiView kontrolü ilk açıldığında hiçbir görünümü çağırmaz. Ġlk görünümün çağırılması
için ActiveViewIndex özelliğine 0 değerini yazarak ilk görünümde açılması ayarlanır.
GiriĢ Butonuna basıldığında TextBox’lara girilmiĢ olan kullanıcı adı ve parola veri
tabanından kontrol edilmelidir. Güvenlik nedeniyle veri tabanından sadece kullanıcı adına
göre veriler çekilecek ve daha sonra if komutu kullanılarak parola kontrolü yapılacaktır.
Kullanıcı adına göre veriler çekilip bir datatable nesnesine aktarılır. DataTable
nesnesinde ya kayıt yoktur, ya da 1 kayıt vardır. Eğer kayıt yok ise kullanıcı adı hatalı
girilmiĢtir. Kullanıcı adı doğru girildiyse sadece 1 kayıt gelmelidir. Eğer bir kayıt varsa bu
kayıt üzerinde parola alanındaki bilgi kontrol edilir. Bu değer uyuĢuyorsa bilgiler doğru
girilmiĢtir. Bu durumda kullanıcının Üye Numarası, Adı Soyadı ve Siteye son giriĢ tarihi vb
bilgiler Session değiĢkenlerine alınır.
Bu iĢlemleri yapan kodlar aĢağıda verilmiĢtir.
Diğer taraftan üye giriĢ sisteminin iki görünümü var demiĢtik. Üye giriĢ usercontrol’ü
yüklendiğinde ilk görünümü açar. Fakat üye giriĢi yapıldıysa ilk görünüm değil ikinci görünüm
gelmelidir. Bunu sağlamak için uyeGiris.ascx usercontrol’ünün Page_Load olayına üye giriĢi
yapılıp yapılmadığını kontrol ederek giriĢ yapıldıysa ikinci görünümü açmasını sağlayan kodlar
eklenmelidir.
Ġkinci görünümde Oturumu Kapat düğmesine basılınca oturumun sonlandırılması için
aĢağıdaki kodlar yazılmalıdır.
HAFTA – 7
Üye Yetki İşlemleri
Üyelik Yönetimi
SQLDataSource (AccessDataSource) Kontrolü
GridView Kontrolü
Üye Yetki İşlemleri
Bir web sitesinde yönetim paneli ve kullanıcı sayfaları olduğunda veya üyeler arasında
yetki farklılıkları olduğunda, üyelerin yetkilerinin belirlenmesi gerekir. Üyelerin yetkisi için
Veri tabanında Üye tablosuna yetki adında, tinyint (bayt) tipinde bir alan eklendi. Normal
kullanıcı için düĢünülen değer varsayılan değer yapıldı.
Bizim sitemizde iki tür üye olacağı için yetki 1 yönetici, yetki 2 üye için düĢünüldü. Bu
kodlama duruma göre değiĢtirilebilir. Normal üyelerin yetki alanındaki değer 2 olması
gerektiği için bu sütunun varsayılan değeri 2 olarak ayarlandı.
Sitede yetki ile ilgili olarak düzeltmeler yapılması gerekir. Ġlk olarak Üye giriĢ
UserControl’ünde ayarlama yapıldı.
Session[“Yetki”] değiĢkeni eklendi. Ayrıca yetki ile giriĢin doğrudan etkisin görülmesi
için sitenin yeniden yüklenmesi daha doğru olacağı için Response.Redirekt komutu ile
default.aspx sayfası yeniden çağırıldı. Buna göre üye giriĢ UserControl sayfasının kodları
aĢağıdaki gibi olur.
Yönetici yetkisine sahip olan kullanıcıların yönetim sayfalarına ulaĢabilmesi için Menü
UserControl’üne “YÖNETĠM” adında bir link daha eklenmesi gerekir. Bu link sadece yönetici
yetkisine sahip üyeler tarafından görülmelidir. Bu nedenle ASP kontrollerinden HyperLink
kontrolü kullanıldı. Menü UserControl’ü yüklenirken üyenin yetkisine bakılarak bu link
görünür hale getirilecektir.
Bu sitenin tasarımında yetki 1 yönetici idi. Üye giriĢ UserControl’ünde Session’da Yetki
ismindeki değiĢkene üyenin yetkisi kaydedilmiĢti. Menü UserControl’ünde de bu değiĢkenden
yararlanarak YÖNETĠM linkinin görünüp görünmeyeceği belirlenecektir.
Ġlk olarak Session[“Yetki”] isminde bir değiĢkenin olup olmadığı kontrol edilir. Eğer
yoksa YÖNETĠM linki gizlenir. Ġkinci olarak Session[“Yetki”] değiĢkeninin değerinin 1 olup
olmadığı kontrol edilir. Eğer 1 ise YÖNETĠM linki gösterilir, aksi halde gizlenir. Bununla
ilgili olarak Menü UserControl’üne aĢağıdaki kodlar eklenir.
Menüde Yönetim sayfalarına link verilmemiĢ olsa bile oturum açılmadan doğrudan
adres satırından yönetim sayfasının adı yazılarak giriĢ yapılabilir. Hâlbuki yönetim
sayfalarına sadece yöneticilerin üye giriĢi yatıktan sonra girebilmeleri gereklidir. Bu
durumda yöneticilerin giriĢ yapabileceği sayfaların Load olaylarına kontrol kodları
eklenmelidir. Bu kodlar ile yönetici oturumu açılıp açılmadığı kontrol edilir. Eğer yönetici
giriĢi yapılmadıysa sayfaya giriĢ izni verilmez. Bu kodların yönetim ile ilgili tüm sayfalara
eklenmesi gerekir. Fakat bu pratik bir durum değildir. Site incelendiğinde tüm yönetim ile
ilgili sayfalar yönet.master sayfası ile bağlıdır. Bu durumda kontrol kodları sadece
yönet.master isimli MasterPage sayfasına eklenmesi yeterli olacaktır. AĢağıda yönet.master
sayfasnın Load olayına eklenen kod görülmektedir.
Dikkat edilirse, üye giriĢi yapılmadığında ve normal üye giriĢi yapıldığında doğrudan
default.aspx sayfasına yönlendirme yapılmaktadır. Yönetici giriĢinin yapılıp yapılmadığı
Session[“Yetki”] isimli değiĢkenin değeri ile anlaĢılmaktadır. Bu durumda yönetim sayfası
adres çubuğuna yazılsa bile bu yönlendirme sayesinde doğrudan default.aspx sayfası
ekranda görünecektir.
Yönetim sayfalarında kullanılan MasterPage yönet.master sayfasında bir menüye
ihtiyaç vardır. Bu menü yönet.master sayfasında basit olarak hazırlanmıĢtır.
Ġlk olarak web sitemizde üyelik iĢlemleri hazırlanmıĢtır: Yeni üyelik baĢvurusu ve üye
giriĢi. Bu nedenle üyelik yönetim sayfası önce hazırlanacaktır.
Üyelik Yönetim sayfasında veri tabanı bağlantısı ve üye bilgileri üzerinde düzeltmeler
için iki adet asp kontrolü kullanılmıĢtır: SQLDataSource (AccessDataSource), GridView.
SQLDataSource kontrolü y_uyelik.aspx sayfasına eklenir. Bu kontrolün ayarı yapılır.
Kontrol fare ile seçilince sağ üst köĢesinde beliren ok iĢaretine basılır. Açılan menüden
“Configure Data Source” seçeneği seçilir. Burada il olarak veri tabanı bağlantısı ayarı
yapılır.
Burada veri.mdf isimli dosya belirecektir. Bunu seçip Next düğmesine basılınca
connectionstring oluĢturulur.
Sonraki adımda ise veri tabanında hangi tabloya bağlanılacağı belirlenir.
Bu ekranda “Specfy columns …” seçeneği seçilidir. Alttaki combo’dan hangi tabloya
bağlanılacağı belirlenir. Altta o tablodaki alanlar listelenecektir. Burada tüm alanların dâhil
edilmesi için “*” iĢaretlenir.
Biz bu bağlantı ile sadece verileri listeleyeceksek Next ile devam edilir. Fakat veriler
listelenip aynı zamanda üzerinde düzenlemeler (Veri değiĢtirme, Kayıt Ekleme, Kayıt silme)
yapılacaksa Advenced isimli butona basılır.
Gelen diyalog penceresinde “Generate ….” Ġsimli kutucuk iĢaretlenir. Bu sayede
oluĢturulan Seçme (Select) sorgusuna göre veriler üzerinde ekleme, değiĢtirme ve silme
iĢlemleri için diğer SQL cümleleri oluĢturulur (Insert, Update, Delete). “Ok” butonuna
basarak iĢlem tamamlanır. Daha sonra Next ve Finish butonları ile bağlantı ayarı
tamamlanır.
Bu aĢamada bir konuya dikkat etmek gerekiyor. Üye bilgilerinde yönetici dahi olsak
değiĢtirilmemesi gereken bilgiler vardır. Üyelik tarihi, Son ziyaret, ziyaret sayısı, kullanıcı
adı alanları değiĢtirilmemelidir. Bu alanların değiĢtirilmesini engellemek için
SQLDataSource kontrolünde yapılan ayarlamalarda SQL cümlelerinde düzeltmeler
yapılmalıdır. Aksi halde bu alanlardaki bilgiler de değiĢtirilecektir. Bu nedenle
SQLDataSource’nin ayar kısmına ilk ayarlama yaptığımız Ģekilde tekrar giriĢ yapıyoruz.
Birinci adımda hiçbir değiĢiklik yapmadan ikinci adıma geçiyoruz.
Bu adımda üstteki seçeneği seçiyoruz “Specify a custom…”. Next butonu ile diğer
adıma geçiyoruz.
Burada 4 temel SQL iĢlemi ayrı sekmelerde gösterilmektedir. Yukarıda belirtilen
alanlarda değiĢiklik yapılmaması için Update ve Insert komutlarında düzeltmeler yapılması
gerekir.
ĠĢaretli alanlar silinir
Insert komutunda ise
ĠĢaretli alanlar silinir
Select ve Delete komutlarında değiĢikliğe gerek yoktur. Next butonu ile devam edilir
ve ayar tamamlanır.
Verilerin gösterilmesi ve düzenlenmesini yapmak için ASP kontrollerinden GridView
eklenir. Sağ üst köĢede açılan ok iĢaretine tıklanır. “Choose Data Source” kısmından
SQLDataSource1 seçilir. Bu iĢlemden sonra GridView’in Ģekli veri tabanı tablosuna göre
değiĢtirilir. Aynı ok iĢaretinden “Auto Format” ile GridView kontrolünün biçimlendirmesi
değiĢtirilebilir.
Biz bu grid üzerinde veri değiĢtirme iĢlemleri yapacağımız için aĢağıdaki resimde
görülen ayarlar yapılır
Enable Paging: verileri sayfalayarak göster
Enable Sortig: sütun baĢlığına tıklanınca verileri o sütuna göre sıralı göster
Enable Editing: veriler üzerinde değiĢtirme (Edit) iĢlemine izin ver
Enable Deleting: veriler üzerinde silme (Delete) iĢlemine izin ver
Enable Selection: verilerde seçme iĢlemine izin ver
Görüldüğü gibi iĢaretlemeler yapılınca resimdeki gibi grid üzerinde eklemeler olur.
Site çalıĢtırılıp aynı sayfa gösterildiğinde ise
Görüldüğü gibi tasarımda “Edit, Delete” olarak görünen yazılar site çalıĢınca “Düzenle,
Sil” Ģekline dönüĢmaktedir. Düzenle düğmesine basılınca;
“GüncelleĢtir, Ġptal” Ģekline gelmekte ve düzenlenecek sütunlarda textbox ile veriler
düzenlemeye açılmaktadır. Verilerde değiĢiklik yapıp GüncelleĢtir butonuna basılırsa veriler
veri tabanına iĢlenir.
Burada dikkat edilirse kullanıcıAdı, ÜyelikTarihi, SonZiyaret ve ZiyaretSayısı alanları
için de textbox’lar oluĢmuĢ fakat bu alanlardaki bilgilerin değiĢmemesi için SQL kodlarında
düzeltmeler yapılmıĢtı. Gerçi Ģu haliyle bilgiler değiĢtirilse de veritabanında değiĢmez.
Fakat değiĢmeyecek alanların TextBox’lar ile gösterilmesi çok uygun değil. Bunu GridView
kotrolünde ayarlama yaparak düzeltebiliriz.
Resimde görüldüğü gibi “EditColumns” seçeneği seçilerek bu düzeltme yapılabilir.
Düzenleme yapılmasını istemediğimiz sütunları soldaki listeden (Selectted fields)
seçip sağ bölmeden (Properties) ReadOnly özelliği True yapılarak sağlanabilir. Properties
penceresinde daha birçok sütun özelliği belirlenebilir.
HAFTA - 8
Yönetim paneli, program listesi ve ekleme(gridview,detailsview)
HAFTA - 9
Resim galerisi, listelenmesi ve detayı (listview)
HAFTA - 10
Resim galerisi yönetim paneli (upload control)

Benzer belgeler

ASP ders notları - egitimde

ASP ders notları - egitimde HTML Nedir? ................................................................................................................................... 3 HTML avantajları .....................................

Detaylı