ASP.NET Development Server’ın Çalışma Portunu Sabitlemek

ASP.NET Development Server Visual Studio 2005’ten beri kullanabildiğimiz ve IIS’e bağımlı kalmaksınız web projelerimizi çalıştırabilmemizi sağlayan bir sunucu uygulaması. Her proje için dinamik olarak oluşturulan bir port numarası üzerinde projemizi çalıştıran bu küçük uygulama gerçekten geliştirme aşamasında işimizi oldukça kolaylaştırıyor. Ancak File System üzerinde geliştirilen bu web projelerini farklı bilgisayara taşıdığımızda port numarası değişeceği için sorunlar çıkabilir. Özellikle bir proje içerisinde birden fazla Web Site ve Web Service projeleriniz varsa ve bu uygulamalar birbirleriyle konuşuyorsa projenin başka bir makinaya taşınması durumunda farklılaşacak port numaraları nedeniyle projenizde konfigürasyon değişiklikleri yapmanız gerekebilir. Yine Visual Studio’da File System modunda oluşturulan bir projeyi test etmek için IIS’e taşıdığımız zaman da port numaraları önem taşıyabilir. Neyse sıkıntımız belli, çokta uzatmadan port numarasını nasıl sabitleriz, bir bakalım.

Öncelikle projeyi normal şekilde başlatalım.

Görüldüğü gibi Development Server belirlediği bir port numarası üzerinden çalışmaya başladı. İşte bu noktada bu adresi başka bir uygulama içerisinde saklarsam(ki bir Web Service’in adresini sıklıkla biryerlerde saklarız) projeyi farklı bir yere taşıdığımda sıkıntılar çıkabilir.  

Aslında yapılacak işlem çok kolay olmasına rağmen biraz gizli bir yolu vardır diyebiliriz. Nasıl mı gizli? Akla ilk gelen adım projemizin üzerine sağ tıklayıp özelliklerine gitmek olacaktır, ama orada bulamayacaksınız. Biraz yaklaştık ama bulamadık:) Solution Explorer’da projemizi seçtikten sonra Properties penceresini açarsak(sağ tıkladığımızda gelen pencere değil) buradaki iki seçenek işimizi görecek. Bu pencereye, projemizi seçtikten sonra F4 tuşuna basarakta ulaşabilirsiniz.
 

Properties penceresinden ilk olarak Use dynamic ports değerini False, ardından Port number değerine de istediğimiz sabit port numarasının değerini girmemiz yeterli olacaktır. Projeyi bundan sonra çalıştırdığımızda Development Server hep seçilen port numarasını kullanacaktır.

21 Mart 2009 Cumartesi 00:27

Yorum - RSSYorumlar (8)

Kategori: ASP.NET | Visual Studio

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET MVC Resmen Duyuruldu

Sonunda ASP.NET MVC, MIX’09’da resmi olarak duyuruldu. Son 1.5 yıldır Preview, Beta, RC sürümleri ile takip ettğimiz ASP.NET MVC Framework’ün RTM versiyonunu bu adresten indirilebilirsiniz.

Tabiki akla gelen ilk sorulardan birisi ASP.NET MVC’yi nasıl öğrenebiliriz olacaktır. http://www.asp.net/mvc linkindeki dokümanları inceleyerek bu işe başlayabilirsiniz. Kitap konusunda ise hala piyasaya çıkmış bir kitap yok, ama önümüzdeki ay içerisinde 1-2 kitabın çıkması muhtemel(amazon.com’u takip etmenizi tavsiye ederim)

ASP.NET MVC Framework’ün .NET Framework 4.0 ile olgunlaşacağını ve daha kullanılır hale geleceğini de söylemekte fayda var.

19 Mart 2009 Perşembe 00:01

Yorum - RSSYorumlar (0)

Kategori: ASP.NET | Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

FileUpload ile Yüklenen Dosyaları Veritabanında Saklamak

FileUpload kontrolünün temel olarak istemciden aldığımız dosyaları sunucunun fiziksel bir konumuna kaydetmek için kullanırız. Fakat bazı durumlarda istemciden alınan bir dosyanın sunucuda güvenli şekilde saklanması için veritabanında saklama yoluna da gidebiliriz. Bu yazımda ASP.NET sunucu kontrollerinden olan FileUpload ile istemciden aldığımız bir dosyayı sunucudaki SQL Server gibi bir veritabanında nasıl saklayabileceğimizi inceleyeceğiz.

İlk olarak dosya bilgilerini saklayacağımız bir tablo oluşturuyoruz.

Tablomuzda resmin adını, binary formatta dosya içeriğini ve dosyanın MIME type bilgisini saklayacağız. FileUpload kontrolünün üç farklı özelliği bize dosyanın bu bilgilerini getirecektir. Bu özelikler ve açıklamaları aşağıdadır:

FileName: Yüklenen dosyanın adı
FileBytes: Dosyanın binary formatta içeriği (byte dizisi olarak getirilir)
PostedFile.ContentType: Dosyanın MIME type bilgisi (MIME dosyanın formatını belirleyen bir isim standartıdır)

Artık sayfamızı tasarlayıp, gerekli kodlarımızı oluşturabiliriz.

<form id="form1" runat="server">

    Yüklenecek dosyayı seçiniz:<br />

    <asp:FileUpload ID="FileUpload1" runat="server" /> &nbsp;<asp:Button

        ID="Button1" runat="server" Text="Dosyayı Yükle" onclick="Button1_Click" />

    <br />

    <br />

    <asp:Label ID="lblMesaj" runat="server" ForeColor="Red"></asp:Label>

</form>


Default.aspx.cs

public partial class _Default : System.Web.UI.Page

{

    protected void Button1_Click(object sender, EventArgs e)

    {

        if(FileUpload1.FileContent != null)

        {

            string dosyaAdi = FileUpload1.FileName; //Dosyanın adı

            byte[] dosyaIcerik = FileUpload1.FileBytes; //Dosyanın bilgilerini binary formatta getirir

            string dosyaTipi = FileUpload1.PostedFile.ContentType; //Dosyanın MIME Type bilgisini getirir

            SqlConnection con = new SqlConnection("data source=localhost; initial catalog=Test; integrated security=true");

            SqlCommand cmd = new SqlCommand("Insert Into Dosyalar Values(@dosya_isim, @dosya_icerik, @dosya_tip)", con);

            cmd.Parameters.AddWithValue("@dosya_isim", dosyaAdi);

            cmd.Parameters.AddWithValue("@dosya_icerik", dosyaIcerik);

            cmd.Parameters.AddWithValue("@dosya_tip", dosyaTipi);

            con.Open();

            if (cmd.ExecuteNonQuery() > 0)

                lblMesaj.Text = "Dosya başarıyla yüklendi";

            con.Close();

        }

    }

}

Görüldüğü gibi SQL Server'da hazırladığımız Dosyalar adındaki tablo için yazılan bir INSERT cümlesine parametre olarak eklenen dosya bilgileri bu şekilde tablomuza eklenebiliyor. Birkaç kayıt ekledikten sonra tablomuzun içeriğini Management Studio gibi bir araçtan kontrol edecek olursak aşağıdaki gibi bir görüntüyle karşılaşırız.

Resimleri başarıyla kaydettik, peki okuma işlemi nasıl gerçekleşecek? Okuma işlemi için ise tablomuzdaki kayıtları SELECT sorgusu ile okumamız gerekecek. Eğer Windows uygulamasında çalışıyor olsaydık DosyaIcerik kolonundan okunan kaydı System.Drawing.Image tipine çevirip Image gibi bir kontrolde görüntüleyebiliriz. Ancak web uygulamalarında bir resmi istemci tarafına taşımamızın yolu biraz daha farklı olacaktır. Resmin içeriği ancak istemciye yollanan cevabın(Response) içerisine yazdırılarak gönderilebilir. Dosyayı istemciye gönderirken dikkat edilmesi gereken hususlardan birisi dosyanın tarayıcıda görüntülenip görüntülenmeyeceğidir. Zira jpg, gif, xml, txt gibi dokumanlar web tarayıcısında görüntülenebilir dosyalarken, zip, exe, dll gibi dosyalar ise tarayıcıda görüntülenemez, ancak yüklenebilir dosyalardır. Aşağıdaki kod parçasında tasarladığımız bir sayfanın kullanıcıya veritabanındaki bir dosyanın nasıl iletilebileceği görülmektedir.

Bu arada, dosyaya yapılan talep QueryString üzerinden resmin DosyaId kolonundaki değer ile iletilmektedir. Yine talebin daha hızlı cevaplanması için Web Form(.aspx) dosyası yerine Generic Handler(.ashx) dosyası kullanmak daha faydalı olacaktır.

ResimGoruntule.ashx

...

using System.Data.SqlClient;

public class ResimGoruntule : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        string id = context.Request.QueryString["id"];

        byte[] dosyaIcerik = null;

        string dosyaTipi = String.Empty;

        SqlConnection con = new SqlConnection("data source=localhost; initial catalog=Test; integrated security=true");

        SqlCommand cmd = new SqlCommand("Select * From Dosyalar Where DosyaId=@id", con);

        cmd.Parameters.AddWithValue("@id", id);

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())

        {

            dosyaIcerik = (byte[])dr["DosyaIcerik"];

            dosyaTipi = dr["DosyaTip"].ToString();

        }

        con.Close();

        //context.Response.AddHeader("content-disposition", "attachment; filename=" + dosyaAdi + ";"); //Download edilecek dosyanın adı belirleniyor. Bu satırın yorum durumu kaldırılırsa tüm dosyalar download işlemine zorlanacaktır.

        context.Response.ContentType = dosyaTipi; //Gönderilen dosyanın tipi belirtiliyor

        context.Response.BinaryWrite(dosyaIcerik); //Gönderilen cevabın içeriği dosyanın binary formattaki bilgileri olacaktır

    }

    public bool IsReusable {

        get {

            return false;

        }

    }

}

Görüldüğü gibi Response nesnesinin BinaryWrite metodu byte dizisi olarak saklanan dosya içeriğini istemciye göndermektedir. Yine dosyanın tarayıcı tarafından tanınmasını ve işlemin sağlıklı şekilde tamamlanması için ContentType özelliğini de resmin MIME type değeri olarak belirliyoruz. Eğer resmin istemci tarafından download edilmesini istiyorsak kod içerisinde yorum satırı olarak bulunan ve AddHeader metodu ile sayfaya eklenen başlık bilgilerinin bulunduğu satırı normal hale getirmek gerekecektir.

28 Şubat 2009 Cumartesi 12:07

Yorum - RSSYorumlar (9)

Etiket: ,
Kategori: ASP.NET | SQL Server

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Bilkent Üniversitesi Yazılım Teknolojileri Seminerleri Ardından

Geçtiğimiz hafta sonu Ankara’da Bilkent Üniversitesi’ndeydim. Daron Yöndem ile beraber Bilkentli teknolojistlerle dolu dolu iki günde .NET teknolojileriyle ilgili bilgi ve tecrübelerimizi paylaşmaya çalıştık. Ben Cumartesi günü C# 3.0 ve LINQ, Pazar günü ise ASP.NET 3.5 ve SP1 ile Gelen Yenilikler sunumlarımla bu güzel etkinliğe katkıda bulunurken, Daron’da Silverlight, WPF ve WCF sunumlarını gerçekleştirdi. Karlı ve soğuk bir Ankara havasında salonu tıka basa dolduran öğrenci arkadaşlarla birlikte oldukça keyifli sunumlar gerçekleştirdik. Uzun bir aradan sonra tekrar Ankara’da olmak, Ankara’daki arkadaşlarımla zaman geçirmek bu hafta sonunun anılarımda daha da güzel bir şekilde yer almasını sağladı :)

bilkent_ilkgun2  bilkent_ilkgun1
Etkinliğin ilk gününden iki kare

Vee katılımcı arkadaşlara söz verdiğim gibi etkinlik dosyalarını paylaşıyorum. Oturumlarda kullandığım sunumları ve kod örneklerini aşağıdaki linklerden indirebilirsiniz. Etkinlikte emeği geçen başta MSP arkadaşlarım Ali Uğur Çakmak ve Alper Özçetin olmak üzere tüm arkadaşlara teşekkürlerimi buradan da iletiyorum.

C# 3.0 ve LINQ Sunumu
C# 3.0 ve LINQ Demolar
ASP.NET 3.5 ve SP1 Sunumu
ASP.NET 3.5 ve SP1 Demolar

24 Şubat 2009 Salı 00:28

Yorum - RSSYorumlar (0)

Kategori: ASP.NET | C#

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET 4.0 ve Vadettikleri

Geçtiğimiz aylarda gerçekleştirilen PDC etkinliğinde önümüzdeki 1-2 yıl içerisinde .NET dünyasında bizleri bekleyen yenilikler anlatıldı. Bu yeniliklerden biri de ASP.NET 4.0'dı. .NET Framework 4.0 ile 4 numaralı versiyonuna erişecek ASP.NET'te bizleri gerçekten önemli yenilikler bekliyor. Zaten bunun ilk uyarılarını .NET Framework SP1 ve ASP.NET MVC ile alıyoruz. ASP.NET’in 1.1 sürümünden 2.0 sürümüne geçiş kadar derin yenilikler olmasa da, 2.0’dan 3.5’e geçişteki yeniliklerden çok daha fazlası yeni sürümde bizleri bekliyor. Henüz ne zaman doğacağı bile kesin olmayan bir teknoloji hakkında birşeyler yazmak normal şartlarda zordur. Ancak Microsoft sağolsun, daha şimdiden bize öyle ipuçları, öyle araçlar sunuyor ki birkaç sene sonraki yenilikleri şimdiden okuyabilme, inceleyebilme, hatta test edebilme şansını yakalayabiliyoruz. İşte bu izlenimlerim sonucunda sizlerle paylaşmak istediklerim:

Gelecek olan yeniliklere baktığımızda mimariye eklenen köklü değişikliklerin yanı sıra, varolan yapıda aksaklılara neden olan ve çoğu ASP.NET programcısının şikayetlerinin ciddi anlamda giderilmeye çalışıldığı görülüyor. MVC Framework, Routing, Dynamic Data, Chart kontrolleri, Ajax tarafındaki yeni eklentiler ve kontroller aslında 4.0 sürümünde bizleri bekleyen en ciddi yenilikler olarak göze çarpıyor. Diğer yandan şu an varolan ViewState ile ilgili sorunlar, Master-Content Page, User Control’ler ile veri kontrollerinin template’lerindeki kontrollerin istemci tarafına taşındığında ID bilgilerinin değişmesi ve ele alınmasının zorlaşması, kontrol çıktılarının <table> elementi olarak üretilmesi gibi sorunların giderilmesine yönelik yeniliklerin daha şimdiden geldiğini görebilmek, hatta test edebilmek mümkün(CTP sürümünde bu özelliklerin çoğunu test edebiliyoruz). Yine Visual Studio 2010’da 2.0 sürümünden 4.0 sürümüne kadar multi-targetting özelliğinin olması, JQuery desteğinin gelmesi bizi bekleyen olumlu gelişmeler. Bunların dışında yine ufak tefek, ancak etkileyici yenilikler de önümüzdeki Beta sürümlerde eklenerek, nihai sürümde karşımıza yepyeni bir ASP.NET geliştirme ortamı çıkacak gibi görünüyor.

16 Şubat 2009 Pazartesi 00:28

Yorum - RSSYorumlar (0)

Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Birden Fazla Tabloyu SqlCacheDependency Yapısında Önbelleklemek

SqlCacheDependency nesnesi ASP.NET uygulamalarında veritabanındaki güncellemelere göre önbellekleme yapılmasını sağlayan nesnedir. Zamana bağımlı kalmadan çok daha hızlı ve performans açısından önemli kazançlar sağlayan bu nesneyi tek bir tablodan gelen kayıtların önbelleklenmesi için kullanabiliyoruz. Fakat çoğu uygulamada JOIN'li ifadelerle birden fazla tablonun verilerini eşleştirebiliyoruz. Peki böyle bir durumda önbellekleme işlemini SqlCacheDependency nesnesi ile nasıl gerçekleştirebileceğiz? Çünkü yapısı itibariyle bu nesne tek tablo ile çalışabilir şekilde tasarlanmıştır. Sorumuzun cevabı: AggregateCacheDependency nesnesi(Yanılmıyorsam .NET Framework 2.0 ile gelen bir tiptir). AggregateCacheDependency nesnesi birden fazla CacheDependency nesnesini içerisinde saklayarak, herhangi bir nesnenin durumunun değişmesinde Cache nesnesinin bellekteki bilgilerini kaldıracak ve önbellekleme işlemini başarılı şekilde yapabilmemizi sağlayacaktır. Yapmamız gereken tek işlem herbir tablo için oluşturduğumuz SqlCacheDependency nesnelerini AggregateCacheDependency nesnesine Add metodu ile eklemek ve bu nesneyi Cache'e Insert metodu aracılığıyla eklemektir. Aşağıdaki kod parçalarında bu işlemin nasıl yapılabileceğini görebilirsiniz.

SqlCacheDependency dep1 = new SqlCacheDependency("dbCon", "Urunler");

SqlCacheDependency dep2 = new SqlCacheDependency("dbCon", "Siparisler");

SqlCacheDependency dep3 = new SqlCacheDependency("dbCon", "Musteriller");

 

AggregateCacheDependency aggDep = new AggregateCacheDependency();

aggDep.Add(dep1,dep2,dep3);

 

Cache.Insert("urunSiparis", dt, aggDep);

SqlCacheDependency ASP.NET uygulamalarında çok verimli şekilde önbellekleme işlemleri yapılmasını sağlar. Ancak hangi şekilde olursa olsun, önbellekleme işlemlerinde unutulmaması gereken nokta, çok büyük verileri Cache'te saklayacak olursak ve sistem kaynakları yeterli değilse bazı durumlarda OutOfMemoryException hatası alabiliriz. Yani hem hataların oluşması, hem de bellekte çok fazla yer işgal etmek uygulamanın performansı adına kötü pratikler olacaktır(bkz: Kaş yapalım derken göz çıkarmak). Bu nedenle Cache'te saklanacak verilerin boyutu bizim için önemli bir kriterdir, bu ayrıntıyı unutmamak lazım.

Bu arada yeri gelmişken ASP.NET uygulamalarında performans ipuçlarına ihtiyacınız varsa, bu Cuma akşamı gerçekleşecek olan webinerime katılımlarınızı beklerim. Bilgileri bu adresten bulabilirsiniz.

11 Şubat 2009 Çarşamba 12:35

Yorum - RSSYorumlar (0)

Etiket: ,
Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET MVC 1.0 RC Resmen Duyuruldu

Dün Internet Explorer 8.0’ın RC1 sürümünün duyurulmasının ardından bu sabahta bir başka önemli Release Candidate duyurusu RSS okuyucularımıza düştü. Aylardır beklediğimiz ASP.NET MVC Framework 1.0’ın Release Candidate sürümü bugün itibariyle herkese açılmış durumda. Önümüzdeki ay içerisinde 1.0 versiyonunun (tahminimce Mart ayını bulur) duyurulması bekleniyor ve en güzel haberlerden birisi de 1.0 versiyonu hemen hemen RC versiyonu ile aynı olacak, yani ciddi değişiklikler beklenmiyor. Bu da RC sürümünü ciddi olarak incelemek için oldukça geçerli bir sebep.

Bu linkten indirebileceğiniz yeni sürümle ilgili bilgileri şimdilik Scott Guthrie ve David Hayden’in yazılarından incelemenizi tavsiye ederim.

Scott Guthrie - ASP.NET MVC 1.0 Release Candidate Now Available
David Hayden - Download ASP.NET MVC 1.0 Release Candidate

28 Ocak 2009 Çarşamba 08:53

Yorum - RSSYorumlar (0)

Etiket:
Kategori: ASP.NET | Duyuru-Haber

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

AJAX Sayfalarında Geç Yüklenme İşlemleri

Sayfanızda senkron şekilde yüklenecek içeriklerinizle beraber UpdatePanel'inizin içerisinde de asenkron yüklenecek içerikleriniz var. Fakat UpdatePanel içerikleri biraz yavaş yüklenecek gibi... Biraz daha somut bir örnek verecek olursam normal içeriklerinizin yüklenmesi 2 saniye, asenkron içeriklerinizin yüklenmesi de yaklaşık 7-8 saniye sürüyor. Normal işleyişte sayfanın tamamının oluşturulup istemciye gönderilmesini bekleyecek olursak en az 7-8 saniye istemciyi bekleteceğiz. Peki sayfanın ilk yüklenmesi esnasında, istemcinin tarayısına önce senkron yüklenecek olan içeriği göndersek, bu esnada da UpdatePanel içeriği yüklenmeye devam etse? Nasıl yapabiliriz ki böyle bir işlemi diye soruyorsunuz sanırım. Bu yazımda ASP.NET AJAX uygulamalarında yüklemeyi geciktirme(delay loading) işlemini nasıl gerçekleştirebileceğimize bakıyoruz.

Öncelikle gerekli malzemeler; 1 ScriptManager, 1 Label(senkron içerik için), 1 UpdatePanel, panel içerisine 1 Button ve asenkron içeriği yüklemek için 1 Label daha(sayfamız biraz daha yakışıklı olsun istersek 1 tane de UpdateProgress). İlk label normal içeriği saklayacak, yani ilk yükleme sonucunda istemciye bu kontrol dolu gidecek. Diğer label ise asenkron güncellenecek olan kontrolümüz, yani buradaki yükleme işlemi sayfa istemciye ulaştıktan hemen sonra gerçekleşecek. Sayfamızın HTML kodları ve UpdatePanel'i asenkron güncellenmesinde kullanacağımız kodlar aşağıdaki gibidir.

Default.aspx

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:Label ID="lblStatik" runat="server" Text="Burası statik içeriğin geleceği yer"></asp:Label>

<br /><br />      

<asp:UpdatePanel ID="UpdatePanel1" runat="server">

    <ContentTemplate>

        <asp:LinkButton ID="lbGuncelle" runat="server" Text="Güncelle" onclick="lbGuncelle_Click"></asp:LinkButton><br />

        <asp:Label ID="lblAsenkronIcerik" runat="server"></asp:Label><br />

        <asp:UpdateProgress ID="UpdateProgress1" runat="server">

            <ProgressTemplate>

                Bilgiler yükleniyor. Bekleyiniz...

            </ProgressTemplate>

        </asp:UpdateProgress>

    </ContentTemplate>

</asp:UpdatePanel>


Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)

{

    lblStatik.Text = "Bu kontrol statik içerikleri saklıyor";

}

protected void lbGuncelle_Click(object sender, EventArgs e)

{

    System.Threading.Thread.Sleep(3000); //İşlemi geciktirmek için

    lblAsenkronIcerik.Text = DateTime.Now.ToString();

}

Görüldüğü gibi lbGuncelle isimli LinkButton kontrolü UpdatePanel içeriğini güncelliyor. Sayfa bu haliyle ilk yüklendiğinde UpdatePanel'de herhangi bir çıktı oluşmaz. Ancak sayfa ilk yüklendiğinde LinkButton'a otomatik olarak postback yaptırabilirsek bu esnada UpdatePanel içeriği de istemciye ulaşacaktır. İşte bu postback işlemini istemcide sayfa yüklendiği anda yapabilirsek yüklenmenin gecikmeli olarak gerçekleşmesi sağlanacaktır. Burada iki soru var; ilki istemciye sayfanın yüklendiği anı nasıl yakalayabilirim, ikincisi ise LinkButton'a tıklamadan nasıl partial postback işlemini tetiklerim? Her iki işlem de istemci tarafında gerçekleşecek olaylar olduğu için işin ucu JavaScript'e değiyor. Sayfanın yüklenmesi anında JavaScript'in pageLoad fonksiyonu devreye girer. Diğer yandan programatik şekilde bir kontrolü postback işlemine tabi tutmanın yolu da __doPostBack adındaki JavaScript fonksiyonundan geçer. Aşağıdaki JavaScript pageLoad fonksiyonu, UpdatePanel içeriğinin sayfanın ilk yüklenmesi esnasında gecikmeli olarak yüklenmesini sağlayacaktır.

Default.aspx

<script language="javascript" type="text/javascript">

    var ilkYuklenme = true;

    function pageLoad()

    {

        if(ilkYuklenme) // if bloğuna sadece bir kez girilmesi için

        {

            __doPostBack('lbGuncelle', ''); //LinkButton'a programatik olarak PostBack işlemi yaptırdık

            ilkYuklenme = false;

        }

    }

</script>

Sayfa istemciye yükleniyorken pageLoad fonksiyonu çalışır. ilkYukleme değişkeni bu esnada true olduğu için LinkButton kontrolü postback işlemi yapar ve UpdatePanel içeriği güncellenmeye başlanır. Thread sınıfının Sleep metodu ile geciktirme işlemi yaptığımız için çok açık bir şekilde sayfa istemciye yüklendiğinde gecikmeli olarak UpdatePanel'in içeriği güncellendiğini görebiliriz.

ajax delay loading

25 Ocak 2009 Pazar 15:37

Yorum - RSSYorumlar (2)

Etiket: ,
Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Bağlantılar



Takip Et

RSS Feed twitter friendfeed

Seminer/Webiner Programım

  • Seminer-WebinerASP.NET 4.0 WebForms Yenilikleri (Microsoft İstanbul Ofisi)
    29 Mayıs 2010

  • Seminer-WebinerVisual Studio 2010 Yenilikleri (Osmangazi Üniversitesi)
    15 Mayıs 2010

  • Seminer-WebinerASP.NET AJAX ile Zengin Internet Uygulamaları Geliştirme (Microsoft İstanbul Ofisi)
    3 Mayıs 2010

>> Etkinlik Takvimi