MVC Nedir?

Mvc (Model, View, Controller) yazılım geliştirirken kullanılan mimari desendir. Öncelikle şunu bilmemiz gerekiyor, bu bir tasarım desendir (design pattern) ve hiç bir platformun yada dilin babasının malı değildir. Bunu şundan söylüyorum; adam diyor ki ben asp.net mvc biliyorum, mvc nin bir desen olduğundan haberi yok, sanki Microsoft un bir icadı, mekanızmasıymış gibi ifade ediyor ve bu çok yanlış.

Php, javascript, python, java, asp.net yada her neyse hepsinde ki mvc deseni aynıdır. Bu yaklaşım aslında epey eski fakat web dünyasındaki gelişmeler daha doğrusu artık işin web sitesinden çıkıp web uygulaması haline gelmesi, klasik web geliştirme yöntemlerinin yetersiz kalmasına sebep oldu. Eskiden 1-2 kişi ile yapılan geliştirmeler şimdilerde koca koca ekiplerin geliştirdiği şeylere dönüştü, neylere? işlere.. Hal böyle olunca yeni birinin projeye dahil edilmesinden tutunda, yazılan kodun test edilebilmesine kadar bin türlü yeni hikaye çıktı ortaya.
Okumaya devam et MVC Nedir?

ADO.NET Entity’ e Giriş eKitabı

ADO.Net Entity’ e başlangıç yapmak için faydalı olacağına inandığım bir eKitap yazdım. Umarım konuya ilgi duyan arkadaşların işine yarayan bir kaynak olmuştur. Gelen istekler üzerine sürekli güncellemeye çalışacağım bu kitabı buradan indirebilirsiniz. Olumlu olumsuz görüşlerinizi belirtirseniz çok mutlu olurum ;)

Mvc 3 Jquery Ui – Autocomplete Kullanmak

Uzun zaman önce jQueryUi AutoComplete kullanımı ve Asp.Net ile jQuery Autocomplete kullanmak adında yazılar yazmıştım. Geçtiğimiz günlerde Fehmi Can abi de bir video çekerek Play framework ile autocomplete kullanımını anlatmış. Bende kıskandım aynı olayın mvc3 de nasıl yapıldığını videosuz yazarak anlatmaya çalışacağım :) Bu arada MVC3 ve jQuery kullanımı ile ilgili videolara buradan ve buradan ulaşabilirsiniz.

Okumaya devam et Mvc 3 Jquery Ui – Autocomplete Kullanmak

Razor View Engine püf noktaları

Adı üstünde Razor (ustura) ! kodlarımızı hızlıca yazıp geçiyoruz. Uzun zamandır mvc3 ile geliştirdiğim bir projeyle uğraşıyorum haliyle razor ile kodlarımı yazıyorum. Geçen gün web forms ile geliştirdiğim bir projeye bazı özellikler eklemem gerekti, aman Allah’ ım <% %> bunlardan aç kapat aç kapat iflahım söküldü meğer razor candan da öteymiş bunu bir kez daha anladım. Bu yazıda anlatacaklarımın  hepsini Scottgu abimizin bloğundan öğrendiğimide söylemek istiyorum :) Düşünüyorumda yazacaklarımla başlık biraz alakasız gibi oldu ama idare edin :)

Okumaya devam et Razor View Engine püf noktaları

Mvc 3 ile Ziyaretçi Defteri

Çok sevdiğim bir öğrenci arkadaşım, “abi ziyaretçi defteri yapar mısın bana ?” dedi,  yaparım dedim. Ne kadar sürer dedi, taş patlasa 1 saat dedim. Mvc 3 sağolsun 15 dakika da istediğimiz özelliklerdeki ziyaretçi defterini yaptık :) Yeni başlayan arkadaşların işine yarar diye bu örneği paylaşmak istedim. Bu basit defterde, code-first ile model ve doğrulama (validation), jQuery Ajax ve sql compact 4.0 kullandık. Örneği buradan indirebilirsiniz, umarım faydalı olur.

Bu görseli başka bir yazı için hazırlamıştım, sanırım bundan sonra sık sık kullanacam, çok güzel oldu yav :) Okumaya devam et Mvc 3 ile Ziyaretçi Defteri

Asp.Net Mvc 3 Semineri sonrası

Dün KTUCEC – KTU Computer Engineering Club‘ ın düzenlediği etkinlikte Asp.Net Mvc 3 üzerine uygulamalı bir anlatım yaptım. İlk tecrübem olduğundan bir hayli heyecanlandım, öyle ki kendimi tanıtmadan direk konuya girdim :) Benim için çok önemli bir tecrübe oldu. Webe ilgi duymayan arkadaşların sıkıldığı, ilgi duyanların ise zevk aldığı bir anlatım olduğunu düşünüyorum. Kendimce bir yol haritası ve katılımcılara sormak için hazırladığım sorularım vardı ama sadece vardı heyecandan bakamadım bile :) Hayalini kurduğum bir olaydı ve gerçek oldu. Devamında çok daha iyi olacağına inanıyorum. Emeği geçen 4primes Teknoloji Grubuna ve Sözenler Bilgisayar‘ a çok teşekkür ediyorum. Emeği geçenlere ve katılan herkese teşekkür ediyorum.



jQuery ile performans hareketleri – 1

Bu yazı serisinde jQuery ile nasıl performans çakallıkları yapabiliriz bunlara değineceğim. Zaman zaman çok ufak nüanslar ile ciddi yüklerden kurtulabiliyoruz, önemli olan bu nüansları görebilmek. Yaptığım işlerde jQuery’ i sadece bu amaçlarla kullandığım bile oluyor. Neyse lafı fazla uzatmadan ilk hareketimize geçelim.


Okumaya devam et jQuery ile performans hareketleri – 1

Mvc projesinde jQuery Ajax Kullanımı – Video

Mvc projemizde jQuery ajaxı kullanarak, bir içeriğin altına yorum ekleme ve silme işlemini gerçekleştireceğiz. Bu işlemin bize kazandırdıklarını, mvc ile uygulama geliştirmenin bize kattıklarınıda anlamaya çalışacağız. Umarım faydalı olur.

Videoyu daha kaliteli izlemek için buradan indirebilirsiniz.

Projeyi buradan, videoyu buradan indirebilirsiniz.

MasterPage kullanımda kontrollerin ID mevzusu

Asp.Net de sayfamıza eklediğimiz her kontrolün bir id si bulunuyor. Javascript ile kontrollerimize erişmek istediğimizde bu id leri direk kullanabiliyoruz. Eğer masterpage kullanırsak işler biraz değişiyor. Sayfamız masterpage den türediği zaman kontrollerin idlerine bir ön ek geliyor. Bunu kod tarafında göremesekte sayfa yorumlandıktan sonra kaynak kodlarına baktığımızda id lerin değiştiğini görüyoruz. Haliyle jquery ile ilgili id deki elemanı seçmemiz için kod tarafında ki id değil, kullanıcı (client) tarafında ki id yi kullanmamız gerekiyor. Bu durumda İki şekilde problemimizi çözebiliyoruz. Birinci çözüm yolu kontrollerin ClientID özelliğini kullanmak. <%=kontrol.ClientID%> dediğimizde geriye dönen id bizim kontrolümüzün sayfa yorumlandıktan sonra oluşan değerdir. Fakat bu yöntemi .js sayfamızda kullanmamız söz konusu değil bu sebepten direk .js içerisine html de oluşan id yi yazarak kullanabiliyoruz. Şöylede bir durum var hiç uğraşmadan kontrollerimize class atayıp yukarıdaki olaylara bulaşmadan direk class adını yazarak seçip istediğimiz işlemleri aynen yapabiliriz. Burada ki tek nüans id yakalama performansı class a göre daha iyi fakat bunu küçük işlerde görmemiz çok zor ;) Neyse umarım konu anlaşılmıştır. Aşağıda bir örnek  bulunuyor, dilerseniz çalışan halini buradan indirebilirsiniz.

    <script type="text/javascript">
        jQuery(function($) {
            $("#<%=date.ClientID %>").mask("99/99/9999");
            $("#<%=phone.ClientID %>").mask("(999) 999-9999");
            $("#ctl00_ContentPlaceHolder1_tin").mask("99-9999999");
            $("#ctl00_ContentPlaceHolder1_ssn").mask("999-99-9999");
        });
    </script>

Asp.net ile çok dilli uygulama geliştirme.

Günümüzde çoklu dil (multi language) giderek önem kazanıyor. Bunun en büyük sebebi, projelerin artık ülke bazlı düşünülmüyor olması. Eskiden 2 dil bile fazla gelirken şimdilerde kullanıcı eğilimine göre bu sayı artabiliyor. Çoklu dil yapısı için bir sürü yöntem bulunuyor. Örneğin; xml, veritabanı, resource kullanmak vb.. Biz bu yazımızda resource ile çoklu dilli uygulama nasıl geliştirilir buna bakacağız.

Öncelikle mevcut bir sayfamızı kolay bir şekilde nasıl çoklu dile çeviririz buna bakacağız. Ben örnek olarak küçük bir form hazırladım.

Formumuz da textbox, dropdownlist, label, button ve validator kontrollerimiz bulunuyor. Eğer elle bu forma daha doğrusu sayfaya girişip tek tek elle değişkenleri tanımlamaya kalkarsak epey bir zamanımızı alır. Visual studio geliştiricileride böyle düşünmüşler ki bizi yormamak için Tools menüsünün altına Generate Local Resource özelliğini koymuşlar. Unutmadan bu menü sadece tasarım kısmındayken çıkıyor. Buraya tıkladığımızda bizim yerimize resource dosyası oluşturuluyor ve gerekli değişiklikler sayfamızda yapılıyor. Kaynak dosyamız App_LocalResources klasörünün altında sayfaAdi.aspx.resx şeklinde bulunuyor. Okumaya devam et Asp.net ile çok dilli uygulama geliştirme.

jQueryUi AutoComplete kullanımı

Uzun zaman önce jQuery eklentisi olan Autocomplete ile birlikte nasıl bu işi yaptığımızı yazmıştım. Bu sefer jQueryUi ye eklenen bu özelliğin nasıl kullanıldığını anlatmaya çalışacağım. Jqueryui ile birlikte gelen autocomplete de bir çok özellik bulunuyor. Tüm özellikleri kolayca kullanabiliyor ve istediğiniz gibi şekillendire biliyorsunuz. Ben bu örnekte temel olarak arama işlemini anlatacağım, eklentinin sayfasından diğer özelliklerine bakıp kendinize göre geliştirmeler yapabilirsiniz. Hemen default.aspx sayfamızdan başlayalım;

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js" type="text/javascript"></script>
    <link href="ui-Themes/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" />
    <script>
        $(function() {
            $("#deger").autocomplete({
                source: "Search.ashx",
                minLength: 1,
                select: function(event, ui) {
                    alert(ui.item.id +" / "+ ui.item.value);
                }
            });
        });
	</script>

        <div class="demo">
            <div class="ui-widget">
	            <label for="deger">Bir değer girin: </label>
	            <input id="deger" size="50" />
            </div>
        </div>

Yukarıda ki kodda anlatılacak çok fazla bir şey bulunmuyor. Jquery kütüphanelerimizi yüklüyoruz, sonrasında değer girilecek input umuzun id sini yakalayıp autocomplete özelliğini ekliyoruz. Source ye dinamik olarak aramanın yapılacağı sayfamızın adresini veriyoruz. minLenght değeri ise kaç karakterden sonra aramaya başlanması gerektiğini ifade ediyor. 3 yazarsak 3. karakterle birlikte arama işlemi başlayacaktı. Select kısmında ise veri seçildiğinde ne olacağını fonksiyon olarak tanımlıyoruz. Bu örnekte gelen verinin değerini ve id sini alert ile ekrana basıyoruz.

Search.ashx (arama işleminin gerçekleştiği sayfamız.)

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/json";
            string strJsonTemplate = "\"id\":{0},\"value\":\"{1}\"";
            string strParam = context.Request.QueryString["term"];

            StringBuilder sb = new StringBuilder();
            Dictionary<int, string> d = veriler();
            sb.Append("[");
            foreach (KeyValuePair<int, string> item in d.Where(v => v.Value.Contains(strParam)))
            {
                sb.Append("{" + string.Format(strJsonTemplate, item.Key, item.Value) + "},");
            }
            sb.Append("]");

            context.Response.Write(sb.ToString().Replace(",]", "]")); //sonda kalan virgülü kaldırıyoruz.
        }

        public Dictionary<int,string> veriler()
        {
            Dictionary<int, string> d = new Dictionary<int, string>();
            d.Add(1, "javascript");
            d.Add(2, "asp.net");
            d.Add(3, "csharp");
            d.Add(4, "php");
            d.Add(5, "java");
            d.Add(6, "jquery");
            d.Add(7, "html");
            d.Add(8, "css");
            d.Add(9, "mssql");
            d.Add(10, "mysql");
            d.Add(11, "visual studio");
            d.Add(12, "net beans");
            return d;
        }

Bur örnekte Dictionary içerisine elle eklediğim veriler içerisinde arama işlemi yaptım. Siz bu kısmı istediğiniz gibi düzenleyip veritabanınızda arama işlemini kolayca yaptırabilirsiniz. Bu sayfada ekstradan yaptığımız tek olay veriyi jSon veri türüne çevirmek. Arama işlemini QueryString ile birlikte gelen term bilgisini kullanıyoruz. Sonrasında basit bir foreach ve bilgileri ekrana yazdırıyoruz.

Basit bir jSon verisi;

[{"id":1,"value":"javascript"},{"id":5,"value":"java"}]

Gördüğünüz gibi çok basit ve kullanışlı bir şekilde otomatik tamamlama işlemini yaptık. İlgili projeyi buradan indirebilirsiniz. Hepinize güzel ve sağlıklı günler, hoşça kalın..

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