dAhA kArAr vErMeDiM

Pazar, Hazirane 11, 2006 - Delphi 2006 ve ASP.NET İle Arşivbank Site Tasarımı -3-

Kategori: KOD BANKASI
    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ı enustorta, 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.

User Control

    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.


EkleBunu Sosyal Paylaşım Butonu
Yorum yaz!

<- Son Sayfa :: Sonraki Sayfa ->

Hakkımda

Ah bir öğrensem şu bilgisayar işini. Bırakıp gideceğim bu yerleri bu işleri.

Bağlantılar

Ana Sayfa
Profilim
Arşiv
Arkadaşlarım
e-posta

Kategoriler

Arkadaşlarım