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°isken2=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
HTML Nedir? ................................................................................................................................... 3
HTML avantajları .....................................