Ado.Net Entity framework’ e giriş – Video

İlk videomuzda MVC konusuna bir giriş yapmıştık. Model kavramına çok fazla değinmemiştik, bu video da ado.net entity framework 4.0 ile modelimizi oluşturup, insert, delete, update ve select işlemlerinin nasıl yapıldığına göz atıp, mvc bilgilerimizi tekrar gözden geçiriyoruz.

Videoda ki uygulamayı buradan indirebilirsiniz.

Mvc ye giriş – Video

Kaç zamandır denemeler yapıyordum fakat kendimi kasmaktan bir türlü sonunu getiremiyordum. Kendi kendine video çekmek dünyanın en zor işlerinden bir tanesiymiş, buradan bunu anladım. Kendi kendinize konuşmak, daha doğrusu bilgisayar ekranına bakıp konuşmak, bildiklerinizi unutmanıza bile yol açıyor. Umarım bu video ile birlikte tüm olumsuzlukları aşmış olurum ve devamını da getirebilirim. İngilizce bilmediğimden dolayı kelimelerin okunuşlarında gariplikler olabilir ve bazı yerde anlatmak istediğim şeyler sapmış olabilir. Hoşgörünüze sığınıyorum :)

Bu video da Mvc konusuna giriş yapıp, artılarını eksilerini anlatmaya çalışıyorum.

MVC3 & Razor View Engine

Geçmişte mvc ve entity ile birlikte bazı çalışmalarım oldu fakat bazı noktalarda ki yetersizliğinden dolayı bıkkınlık geldi ve ilgilenmeyi bıraktım. Aradan biraz zaman geçtikten sonra Visual Studio 2010, framework 4.0 ve mvc 2 duyruldu açıkcası geçmişteki kötü imajı nedeniyle yine ilgilenmedim. Şimdi ise Mvc 3 beta çıktı ve her zaman ki gibi yine gündemde. Uzun bir süre dirensem de, izlediğim bir video dan sonra tekrar ilgimi çekmeyi başardı. Bunun en büyük nedeni razor view engine esasında razor değil view engine mekanızması beni çok fena cezbetti. Asp.Net tarafında herkesin hayal ettiği, özlediği bir yapıydı bu.

İlk olarak web matrix de cshtml uzantısıyla gördüğüm razorun açıkcası ne olduğu anlamamıştım. Şimdilerde kendi çapımda yaptığım ufak bir projede kullanmanın tarifsiz keyfini çıkarıyorum. Hemen bir örnekle razor view engine kod yapısına bir göz atalım.

Tasarım tarafında basit bir for döngüsü .aspx

    <%for(int i=0;i<5;i++){%>
      <li><%=i%></li>
    <%}%>

Aynı kodun .cshtml versiyonu yani razor

    @for(int i=0;i<5;i++){
        <h1>@i</h1>
    }

Görüldüğü üzere @ işratiyle başlıyor ve html kodlarmızı ekstra bir işlem olmadan içinde kullanabiliyoruz. Bu sayede çok hızlı ve düzenli bir şekilde kodlarımızı yazabiliyoruz.

Şuanda bulunduğuz sayfa <strong>@Request.Url</strong>

Ne kadar basit değil mi ? Razor’ un diğer bir özelliği ise bu mekanızmaya geçişin kolay olması ve ekstra kod bilgisine ihtiyaç duyulmaması. jQuery ile hayatımıza giren $ işaretinden sonra şimdide @ işareti giriyor :)

Şuanda beta olmasından dolayı kod renklendirme (syntax highlighter) ve otomatik tamamlama (intellisense) olayı bulunmadığından biraz zorluk çekebilirsiniz. Ama size şunu ısrarla söylemek isterim ki kesinlikle bir deneme yapın ve bu yapıyı gözlerinizle görün. İlerleyen günlerde razorun yeteneklerine daha yakından bakıp, küçük bir uygulama yapacağız. Şimdilik bu kadar :)

Repeater ile çalışmak

Repeater asp.net aleminin bana göre en delikanlı kontrolüdür. Kafasından hiç bir şey yapmaz, biz ne dersek onu yapar. Bu sebepten dolayı veriyle ilgili kontrollerin en az özelliklisidir, hatta özelliği yoktur bile :) Madem hiç bir özelliği yok neden var bu kontrol ? Hemen anlatayım.

Repeater’ ın abisi olan DataList bir çok güzel özelliği üzerinde barındıran bir kontroldür. GridView ise bu iki kontrolden farklı bir mantıkta çalışır bu sebepten ötürü kulvarları çok farklıdır.  GridView veriyi satır satır (row) ekrana basar, DataList ve Repeater ise eleman elaman (item) basar. GridView’ da DataList’ de veriyi ekrana basarken kendi html şablonunu kullanır, Repeater ise hiç bir şablonu kullanmaz, etiketsiz, biçimsiz bir veri ekrana basar. Şöyleki, sanki bir döngü yazdınız ve veritabanından gelen saf veriyi ekrana bastınız. Bunun neresi güzel diye sorabilirsiniz. İstediğiniz gibi şekillendirebilirsiniz, kendiniz şekillendireceğiniz için w3 kurallarına uygun ve arama motorlarının sevdiği cinsten bir tasarım yapabilirsiniz. Burada şöyle bir durum da var, DataList ile 5 dakikada yapacağınız bir işi Repeater’ la 25 dakikada yaparsınız. Arada ki fark ise birinde kurallara uygun bir tasarım ve tamamen kontrolü sizde olan bir tasarım, diğerinde ise kuralsız ve zaman zaman kontrolün sizde olmadığı bir tasarım. Bu sebepten dolayı, sitelerin kullanıcı arayüzünde Repeater, yönetici kısmında ise DataList kullanmak gerekiyor diye düşünüyorum. Okumaya devam et Repeater ile çalışmak

GridView içindeki kontrole erişme (Findcontrol)

İki önceki yazımızda gridview içerisine templatefield içerisinde textbox eklemiştik. Bu yazımızda kontrol içerisindeki kontrollere nasıl erişebiliyoruz buna bakacağız. Konu bütünlüğü bozulmasın diye gridview içerisindeki kontrollere erişmeye çalışıp, çeşitli denemeler yapacağız. Örnekte kullnacağımız gridviewimiz şu şekilde.

        <asp:GridView runat="server" ID="GridView1" CssClass="grid" ShowFooter="true" AutoGenerateColumns="false">
            <HeaderStyle CssClass="header" />
            <RowStyle CssClass="row" />
            <AlternatingRowStyle CssClass="alternate" />
            <FooterStyle CssClass="footer" />
            <PagerStyle CssClass="pager" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="Id" />
                <asp:BoundField DataField="tarih" HeaderText="Tarih" />
                <asp:BoundField DataField="sessionid" HeaderText="Oturum Kimliği" />
                <asp:TemplateField HeaderText="Bu bir checkbox">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="cbCheckBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir textbox">
                    <ItemTemplate>
                        <asp:TextBox runat="server" ID="txtTextBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir literal">
                    <ItemTemplate>
                        <asp:Literal runat="server" ID="ltrLiteral" Text='<%#Eval("id") %>' />
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:Button runat="server" ID="btnGonder" Text="Gönder" OnClick="btnGonder_click" />
                    </FooterTemplate>
                 </asp:TemplateField>
             </Columns>
        </asp:GridView>

Okumaya devam et GridView içindeki kontrole erişme (Findcontrol)

GridView ile çalışmak ve püf noktaları

Uzun bir aradan sonra kontrollerimizi tanımaya kaldığımız yerden devam ediyoruz. Ana hatlarıyla anlatmaya çalışacağım kontrol namı diğer GridView1 :) Çok fazla detaya girmeden en sık kullanılan özelliklerini ve jQuery ile birlikte neler yapabileceğimize vakit kaybetmeden bir göz atalım.

GridView, bir veri kaynağından gelen veriyi ekrana liste şeklinde basan kontrolümüz. Bir çok yerde kullandığımız bu kontrolde, sayfalama ve sıralama işlemlerini rahatlıkla yapabiliyoruz. Okumaya devam et GridView ile çalışmak ve püf noktaları

Asp.Net Kontrolleri Bölüm 1

Bu yazımda label, literal, textbox ve button kontrollerini (control) anlatmaya çalışacağım. Bu yazı dizisinde ki amacım yeni başlayan arkadaşlara yardımcı olabilmek, akıllarına takılan noktalarıda sorarak öğrenmelerini sağlamak. Kontrollerin anlatağım özellikleri en çok kullanılan özellikleridir. Lafı daha da uzatmadan başlayalım.

Microsoft Asp.Net ile birlikte web form adını verdiği yeni bir çalışma mantığıyla, alışıla gelmiş web geliştirme yöntemlerinin dışına çıktı. Web form ilk başlarda alışılması zor fakat alıştıktan sonrada kullanması çok kolay bir yapıdır. Kabaca şöyle çalışır, kontrollerimizin hepsi runat=”server” etiketli bir form un (<form runat=”server” ID=”form1″>kontrollerimiz burada</form>) içerisinde yer alır. Kontrollerimiz üzerinde de runat=”server” ifadesi geçmelidir. Sayfa üzerinde bir butona yada linke tıklandığında sayfa olduğu gibi post edilir framework tarafından işlenir ve geri döner. Bu işlemede PostBack diyoruz. Verilerde ViewState denilen bir meknızmayla taşınır. Bu sebepten dolayı klasik asp den yada diğer dinamik dillerden asp.net e geçmek sizi biraz zorlayabilir. Bu mekanızmanın avantajları ve dezavantajları bulunmaktadır. Bu konulara girmek istemiyorum çünkü konumuzdan epeyce uzaklaşmış oluruz. Bu ön bilgiden sonra ilk nesnemizden başlayalım. Okumaya devam et Asp.Net Kontrolleri Bölüm 1

Asp.Net ile fotoğrafları kaliteli boyutlandırma

Fotoğrafları direk boyutlandırdığımız zaman ciddi bir kalite kaybı meydana geliyor. CompositingQuality, InterpolationMode veya SmoothingMode değerleriyle oynasakda Photoshop’ un boyutlandırma kalitesine erişemiyoruz. Biraz araştırma yaptıktan sonra EncoderParameters ve ImageCodecInfo ile kalitenin ciddi bir şekilde arttırıldığını gördüm. Sonuç aşağıdaki görselde açık bir şekilde görülebiliyor. Özellikle üzerinde yazı bulunan görsellerde fark daha iyi farkediliyor. Aşağıda ki kodu kullanmak için fileupload nesnenizi methoda göndermeniz yeterli. Örneğin; fotograf.yukle(FileUpload1); Şunu da eklemek lazım, kaliteli ve kalitesiz fotoların aralarında neredeyse yarı yarıya boyut farkı bulunuyor.

Okumaya devam et Asp.Net ile fotoğrafları kaliteli boyutlandırma

jQuery Asp.Net Fotoğraf Kırpmak

Fotoğraf kırpmak (crop) işlemi dışarıdan karışık bir işmiş gibi görünsede esasında çok basit bir işlemdir. Hele ki jCrop diye güzel jquery eklentisi varken bu işlem hem kolay hemde eğlencelidir. Olayın mantığına bakacak olursak, jCrop bizim için resim üzerinde seçtiğimiz kısımın yükseklik, genişlik, x ve y değerlerini alıyor. Sornasın da bu bilgiler eşliğinde orjinal resim üzerinde kesme işlemini yapıyoruz. Eklentinin bir çok ayarı ve özelliği bulunuyor, bunlara buradan ulaşabilirsiniz. Az kaldı unutuyordum, projenize jquery.js ve jCrop u eklemeyi unutmayın :)

Okumaya devam et jQuery Asp.Net Fotoğraf Kırpmak

Dosya daha önce yüklenmiş mi ?

Aynı dosya daha önce yüklenmiş mi yoksa ilk kez mi yükleniyor kontrolünü sağlamak için, yüklenen dosyanın checksum ını alıp kaydediyoruz ve sonradan yüklenen dosyalarla karşılaştırıyoruz. Kabaca checksum, yüklenen dosyanın içeriğinin okunarak karşılığında bir değer oluşturulmasıdır. Bu yönteme 100% güvenilir çalışır demek yanlış olur, ama büyük ölçüde güvenilir bir yöntemdir. Şöyle bir örnek vereyim, kullanıcı sitemize bir fotoğraf yükleyecek, fakat aynı foto zaten yüklenmiş, eğer fotoğrafı photoshop yada benzeri bir programda açıp üzerine dahi yazsa oluşacak checksum değişir. Bu yöntemi biz bir projemizde şöyle kullanıyoruz. Her yüklenen dosyanın checksum değerini db deki ilgili alana yazıyoruz ve sonrasında yüklenen dosyaların değerleriyle karşılaştırıyoruz. Basit ama etkili bir yöntem olduğunu söyleyebilirim. Okumaya devam et Dosya daha önce yüklenmiş mi ?

Asp.Net Url Encode, Decode

Geçen gün bir projede url yi adres çubuğundan gönderip diğer taraftan da alıp yönlendirmem gerekiyordu. Normalde Server.HtmlEncode ve HtmlDecode ile gelen adresi sorunsuz bir şekilde gönderip almam gerekiyordu fakat & (ampersand) karakterinde problem oluştuğunu gördüm, sonradan diğer karakterlerde de sıkıntı olabilir diye aşağıdaki fonksiyonu yazdım. Kullanımı şu şekilde; Okumaya devam et Asp.Net Url Encode, Decode

Asp.Net kontrollerine giriş

Bir yazı dizisine başlamak istiyorum, başlıktan da anlaşılacağı gibi dizimizin adı kontroller (controller). En sık kullanılan kontroller hakkında temel bilgilerileri örneklerle yazmaya çalışacağım. Asp.Net ile yeni tanışmış yada tanışacak insanlara güzel bir kaynak olacağını düşünüyorum. Şimdi hangi kontrollere bulaşacağız bunun bir listesini yazayım, ilerleyen günlerde de sıradan üçer beşer bu kontrollere detaylı bir şekilde göz atarız. Hatta grup grup yazayım.

  1. Label, literal, textbox, button, linkbutton, imagebutton
  2. Dropdownlist, checkbox, checkboxlist, radiobutton, radiobuttonlist
  3. Gridview, datalist, repeater