Pazar, Hazirane 11, 2006 - Delphi 2006 ve ASP.NET İle Arşivbank Site Tasarımı -3-
Gözüme artık bir Türk dizi film klasiği gibi görünmeye başlayan yazı dizimizin 3 ncüsüne hoş geldiniz.
Bu yazımızda Arşivbank sitesinin tasarımında gerekli malzemeler arasında saydığımız CSS dosyaları ile bir önceki yazıda kısaca değindiğimiz ASPX - ASCX sayfaları üzerinde duracağız.
Yeni bir ASP.NET projesiyle birlikte BDS 2006'nın bizim için oluşturduğu dosyaları sıralarken bunlardan birininde WebForm1.ASPX olduğunu belirtmiştik. Ayrıca hatırlamak bakımından ASPX ve ASCX sayfalarının (dosyalarının) tasarımla kodlamayı birbirinden ayırmak için kullanıldığından söz etmiş ve buna ilişkin sayfa içeriklerini göstermiştik.
Diğer web betik dilleriylede kullanılan sayfa içeriğinin belli şartlara göre belli yerlerinin değiştirilmesi, kalan kısımların standardizasyonun sağlanması bakımından aynı kalması için sayfayı enust, orta, sol, sag ve enalt olmak üzere 5 temel parçaya bölmeye karar verdim. Bu sayfaların yerlerine bağlı olarak ilgili CSS dosya şablonlarını yerleştirdim.
En üstte bir banner ve ana gezinti bağlantıları, solda gezinti bağlantıları, sağda yönetim panelleri ve kısa duyuru başlıkları, en altta telif hakkı, tasarım bilgileri vb., ve ortada haberler ve kullanıcı seçimine göre ilgili sayfalar çıkacak biçimde yapılan tasarımda şimdilik bir tane ASPX sayfası ve oldukça fazla ASCX sayfası bulunmaktadır.
ASCX sayfaları .NET dilinde User Control (Kullanıcı Kontrolü) Page olarakta anılmaktadır. Daha öncede belirttiğimiz gibi tek başlarına published (yayımlanma) edilmeleri mümkün olmayan bu sayfalar ancak bir ASPX sayfasına tutturularak kullanılabilmektedir. Bizim tasarımımızda mevcut tek ASPX sayfasının üzerinde aşağıdaki resimde görülen user control (ASCX)(Kullanıcı kontrol) sayfaları bulunmaktadır.

Tabi biraz hızlı gidiyoruz. Yürümeyi bilmeyen birinden koşmasını beklemek olmaz. Delphi IDE'yi kullanmayı bildiğinizi varsayıyorum. Eğer buraya yabancıysanız biraz mıncıklayın çabuk öğrenirsiniz.
Yeni bir ASP.NET projesi oluştururken BDS'NİN otomatik oluşturduğu WebForm.ASPX sayfasının adını default.aspx ile değiştirdim. Ve her yeni user control sayfasını File > New > Other > ASP.NET User Control seçenekleriyle tek tek oluşturdum.

Oluşturduğum User Control sayfalarını aspx sayfalasına statik olarak bağlamak için BDS desing sekmesine geçip ilgili UserControl sayfasını project manager'dan default.aspx sayfasının üzerine sürükleyip bıraktım. Project manager'i görüntülemek için CTRL+ALT+F11 yapın. BDS içinde sayfanın adıyla, koduyla, tasarımıyla ve geçmişiyle ilgilenmek içinde aşağıdaki resimde görülen sekmelere tıklayın.
 Bu basit sürükle bırak işleminin arkasından BDS bizi bir sürü dertten kurtarıp User Control sayfasıyla ilgili bilgileri aspx sayfamızda page direktifinden sonra ilgili yerlere yerleştiriyor.
<%@ Page language="c#" Debug="true" Codebehind="default.pas" AutoEventWireup="false" Inherits="Default.TWebForm_Default" Trace="false"%>
Her bir usercontrol tanımı aspx sayfamıza kod olarak bu bildirimlerle ekleniyor. <%@ Register TagPrefix="uc1" TagName="enust" Src="enust.ascx" _fcksavedurl=""enust.ascx"" %> <%@ Register TagPrefix="uc1" TagName="sol_sidebar" Src="sol_sidebar.ascx" %> <%@ Register TagPrefix="uc1" TagName="default_orta" Src="default_orta.ascx" %> <%@ Register TagPrefix="uc1" TagName="sag_menubar" Src="sag_menubar.ascx" %> <%@ Register TagPrefix="uc1" TagName="enalt" Src="enalt.ascx" %> <%@ Register TagPrefix="uc1" TagName="orta_yazi_sablonu" Src="orta_yazi_sablonu.ascx" %>
Dikkat ettiyseniz daha tek satır kod yazmadık. Bütün işi BDS bizim için yapıyor. Yukarıdaki user control sayfa deklarasyonunu incelemenizi öneririm. Tüm .NET platformunda geçerli olan bu söz dizimiyle ilgili bir imdat merkezine uğrayın. Ben dilim döndüğü kadarıyla tercüme edeyim.
<%@ Page language="c#"
Üzerinde çalıştığımız sayfa tanımını deklare etmek için kullandığımız ayan beyan ortada. language="c#" bildirimi sayfanın konuştuğu dili anlatıyor. Biz BDS ile yazıyoruz ne alaka dediğinizi duyar gibiyim. Bencede ama anladığım kadarıyla BDS derleme aşamasında sayfaları C# ile uyumlu derliyor olmalı. Dil olarak VB, JS gibi dilleride seçebiliyoruz. Her bir ASPX sayfasında sayfa direktifinden yanlızca bir adet bulunabilir.
Debug="true"
Değerini işimiz bitip yayına vereceğimizde false yapıp kapatıyoruz ki .NET tasarım yapmadığımızı bilsin.
Codebehind ="default.pas"
ile bu aspx sayfasının ilişkili olduğu kodlama unit dosyasını gösteriyoruz. Bu biraz dfm-pas ilişkisine benziyor. Ancak tam olarak böyle değil. Çünki aspx uzantılı sayfa içeriği kendi içinde barındırılıyor.
Inherits="Default.TWebForm_Default" Sayfa oluşturulurken kullanılacak sınıf tanımı. TWebForm_Default = class(System.Web.UI.Page) Trace="false" Sayfa oluşumu ve yayımı esnasında tüm ayrıntılarıyla değişen durumlarını, istemci-sunucu arasındaki diyalogları izlemek için "true" kapatmak için "false". Çok kullanışlı bir icat olmuş. <%@ Register TagPrefix="uc1" TagName="enust" Src="enust.ascx" %> Sayfaya statik bir user control tutturmak için kullanılan söz dizimi. Dinamik tutturmayı ileride göreceğiz. Sık sık kullanacağımız işlemlerde örneğin aynı tasarımı birden fazla yerde kullanmamız gerektiğinde User Control sayfalarından faydalanmalıyız. Arşivbank tasarımında orta sayfa hariç diğer bölümler sitenin tüm bölümlerinde aynı olacağından ana sayfayı (default.aspx)'i 5'e bölüp her bir bölüme bir UserControl ekledim. Orta bölümdeki usercontrol sayfasını ise talebe göre değişecek şekilde tasarladım. Şimdilik bir kullanıcı kontrolü sayfasının dinamik olarak bir sayfaya dahil edilmesine ilişkin BDS pas kodunu vererek bu yazıyıda bitiriyorum. procedure TWebUserControl1.Page_Load(sender: System.Object; e: System.EventArgs); Var osyf : Integer; begin osyf := 0; if (Assigned(Page.Request.Params['t'])) AND (Page.Request.Params['t'] <> '') then osyf := Int32.Parse(Page.Request.Params['t'].ToString) else osyf := 0; case osyf of 0 : begin Label1.Text :='Arşivbank Hakkında'; Label2.Text :='Arşivbank Konsepti'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('default_orta.ascx')); end; 1 : begin Label1.Text :='Arşivbank Projesi Hakkında'; Label2.Text :='Arşivbank Tasarlama ve Gelişim Süreci'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('orta_about.ascx')); end; 2 : begin Label1.Text :=''; Label2.Text :='Arşivbank Proje Ekibi'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('proje_ekibi.ascx')); end; 3 : // Geliştiriciler için yönetim paneli begin Label1.Text :=''; Label2.Text :='Geliştirici Girişi'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('gelistirici_login.ascx')); end; else begin Label1.Text :='Arşivbank Hakkında'; Label2.Text :='Arşivbank Konsepti'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('default_orta.ascx')); end; end; end; Devamında görüşmek dileğiyle, esen kalın.
|
|
Yorum yaz!
|
|
Hakkımda
Ah bir öğrensem şu bilgisayar işini. Bırakıp gideceğim bu yerleri bu işleri.
Kategoriler
Arkadaşlarım
|