İÇİNDEKİLER
VII
İÇİNDEKİLER
1 TEMEL BİLGİLER 1
.Net Framework Nedir? 1
.Net Bileşenleri 1
CLR (Common Language Runtime - Ortak Dil Çalışma Platformu) 3
MSIL (Microsoft Intermadiate Language - Ara Dil) 3
JIT (Just in Time - Çalışma Anında Derleme) 4
EconoJIT (Ekonomik JIT) 4
Normal JIT 4
PreJIT 4
Base Class Library (Temel Sınıf Kütüphanesi) ve Namespace (İsim Alanı)
Kavramları 5
System 5
System.IO 6
System.Linq 6
System.Net 6
System.Security 6
.Net Framework 4.5.1 6
Asp.Net MVC Nedir? 7
MVC Pattern Nedir? 7
Model 7
View 7
Controller 8
Asp.Net MVC’nin Çalışma Prensibi 8
MVC’nin Avantajları ve Dezavantajları 11
Neden Asp.Net Web Forms? 11
Neden Asp.Net MVC? 12
Karşılaştırma Sonucu 14
2 ASP.NET MVC İLE YAZILIM GELİŞTİRME Asp.Net MVC’ye Başlarken Visual Studio 2013’e Genel Bakış Visual Studio 2013 Asp.Net MVC ile Yeni Proje Oluşturma Asp.Net MVC Projesi Oluşturma 15
15
16
17
18
20
VIII
ASP.NET MVC 5
Visual Studio 2013 Çalışma Ortamı Araç Kutusu (Toolbox) Sekmeler (Tabs) Tarayıcı (Browser) HTML Kodları Dizin Gezgini (Solution Explorer) Ekip Gezgini (Team Explorer) Durum Çubuğu Özellikler (Properties) Visual Studio 2013’te Projeyi Çalıştırma Run (Internet Explorer) F5 Tuşu Model, View, Controller Kullanımı Controller Oluşturma Model Oluşturma View Oluşturma 3 ASP.NET MVC İLE C# KULLANIMI C# Nedir? Neden C# Kullanmalıyız? Öğrenim Kolaylığı Yazılım Geliştirme Sürecindeki Avantajları XML ve Json Desteği Asp.Net MVC ile Proje Geliştirilirken Kullanılan Diller Asp.Net MVC ile HTML Kullanımı Asp.Net MVC ile Javascript Kullanımı Asp.Net MVC ile C# Kullanımı Asp.Net MVC Kodlama Yöntemleri View Engine Nedir? Razor View Engine @ Operatörü Açıklama Satırı Genel Kodlama Değişken Değerini Sayfaya Yazdırma Sayfaya Boşluk Yazdırma Sayfaya HTML Kodu Yazdırma 22
22
23
23
23
24
24
24
24
24
24
24
26
26
28
29
33
33
33
33
34
34
35
35
35
36
37
37
37
38
38
40
42
43
46
İÇİNDEKİLER
Kontrol Yapıları (If, Switch) ve Döngülerin (While, For, Do-While, Foreach)
Kullanımı 49
1. Genel Kod Bloğunun İçinde Kullanımı 49
2. Kontrol Yapıları ve Döngülere Özel Kodlama 51
Asp.Net MVC’de En Sık Kullanılan C# Kodları 52
Link Oluşturma 52
Post İşlemi IsPost Kullanımı 56
HTML Karakter Kodlamasını Tanımlama (HttpUtility) 58
HtmlEncode ve HtmlDecode Kullanım Örnekleri 58
View İçerisinde Metin Formatlama İşlemleri (String.Format) 60
Sayıları Farklı Formatlarda Görüntüleme 60
Tarihi (Date) Farklı Formatlarda Görüntüleme 61
Dosya ve Klasörlere Erişim (Server.MapPath) 67
Dosyanın Sanal Yoluna (Virtual Path) Erişim (Href ) 70
Sayfaya HTML Kodu Yazdırma (Html.Raw) 73
Uyarı Mesajı Penceresi Oluşturma (Javascript - Alert) 74
Uyarı Mesajı Penceresi Sonrası 76
Otomatik Sayfa Yönlendirme 76
4 VIEW View Kullanımı Dizin Yapısı Asp.Net MVC View Tasarımı Controller - View İlişkisi Controller’dan View’a Ulaşım View’dan Controller’a Ulaşım View Oluşturma Controller Üzerinden View Oluşturma Views Klasörüne View Ekleme Action’dan Farklı İsimde View Çağırma Layout (Şablon Sayfa) Kullanımı Layout Oluşturma İç İçe (Nested) Layout Oluşturma Layout İçinde Bölüm (Section) Tanımlama (RenderSection) Parçalı (Partial) View Kavramı ve Kullanımı Partial View Oluşturma 81
81
82
83
84
85
86
87
87
90
92
93
94
102
107
115
116
IX
X
ASP.NET MVC 5
Partial View’ın View’larda Kullanımı 117
ViewStart Kavramı 119
Controller’dan View’a Veri Gönderme (ViewData & ViewBag) 123
ViewData 124
VıewBag 126
Asp.Net MVC ile CSS Kullanımı ve Style Sheet Dosyaları 128
CSS Nedir? 128
En Çok Kullanılan CSS Kodları 129
Genişlik Tanımlama (Width) 129
Yükseklik Tanımlama (Height) 129
Yazı Tipi Tanımlama (Font-Family) 129
Yazı Büyüklüğünü Tanımlama (Font-Sıze) 130
Yazı Kalınlığını Tanımlama (Font-Weight) 130
Yazı Eğikliğini Tanımlama (Font-Style) 130
Yazı Rengi Tanımlama (Color) 131
Yazı Hizalama (Text-Alıgn) 131
Arkaplan Rengi Tanımlama (Background-Color) 131
Asp.Net MVC’de CSS Kullanımı 132
HTML Nesnesine CSS Tanımlama 132
CSS Sınıfı Oluşturma ve HTML Nesnesine CSS Sınıfını Tanımlama 134
5 MODEL 139
Model Kullanımı 139
Model Tanımlama 140
Kayıt Listeleme 143
Yeni Kayıt Oluşturma 148
Kayıt Düzenleme 154
Kayıt Silme 161
Kayıt Görüntüleme 165
Model Nitelikleri (Attributes) 169
Zorunluluk Kontrolü (Required) 169
Başlık Tanımlaması (DisplayName) 172
Özelliğin Düzenlenebilirliği (Editable) 173
Görüntüleme Formatı (DisplayFormat) 175
Veri Türünün Kontrolü (DataType) 177
(EmailAddress) 179
İÇİNDEKİLER
Metin Uzunluğu Kontrolleri (MaxLength, MinLength) Değerleri Karşılaştırma (Compare) Model Binding Model Binding Nedir? Varsayılan Model Binder Yapılandırması Kullanıcı Tanımlı (Custom) Model Binder Oluşturma Action Metod İçinde Custom Model Binder Kullanımı Entity Framework ORM Kavramı ORM ile Neler Yapılabilir? ORM Veritabanı Bağımsız Nasıl Çalışıyor? ORM’nin Avantajları Nelerdir? ORM İle Veritabanı Modelleme Zorunlu mu? ORM’de Mapping Nedir? Entity Framework Nedir? Entity Framework Veri Modeli Oluşturma Entity Framework Veritabanı İçeriği (Data Context) Oluşturma Veritabanı Bağlantı Parametrelerini Tanımlama Entıty Framework ile MVC Controller ve View’ları Oluşturma Veritabanı Oluşurken Tablolara Başlangıç Kayıtları Ekleme Entity Framework ile Kayıt İşlemleri Tablodaki Tüm Kayıtları Sorgulama (Select) Kritere Göre Sorgulama (Where) Kategorideki Ürünleri Sorgulama Ürün Detayını Sorgulama Tabloya Kayıt Ekleme (Insert) Tabloya Ürün Ekleme Kategoriye Ürün Ekleme Tablodaki Kaydı Güncelleme (Update) Tablodan Kayıt Silme (Delete) 6 CONTROLLER Controller Kullanımı Kullanım Örnekleri Action Kullanımı 180
182
184
184
184
187
189
189
191
191
192
192
193
194
194
194
196
198
200
202
204
207
208
212
212
215
217
217
221
225
229
233
233
234
235
XI
XII
ASP.NET MVC 5
Action Nedir? Action Result Kullanımı Sayfa Yönlendirme (RedirectResult) Json Sonucu Döndürme (JsonResult) Dosya Döndürme (fileResult) Farklı Bir Action Metoda Yönlendirme (RedirectToRouteResult) Partial View Döndürme (PartialViewResult) Javascript Döndürme (JavascriptResult) Action ve Model Attributes (Nitelikler) ActionName (Action İsmi) HttpPost (View’dan Controller’a Veri Gönderme) HttpGet (Site İçinde Arama Yapma) Bind (View’dan Alınacak Verilerin Kontrolü) OutputCache (Önbellekleme) RequireHttps (Https Protokolünü Zorunlu Kılma) Asenkron İşlemler Asenkron Controller Sınıfları (AsyncController) Asenkron Action Metodlar 236
236
238
240
243
244
245
252
255
255
257
261
265
267
270
272
273
276
7 WEB API API Nedir? Web API Nedir? Kullanım Alanları Web API Uygulaması Oluşturma Örnek Uygulama (Tüm Kayıtları Listeleme) Parametre Yönetimi (Id’ye Göre Kayıt Getirme) Geri Dönüş Değerlerinin Yönetimi (IHttpActionResult Kullanımı) Ok (İşlem Başarıyla Tamamlanma Durumu) Not Found (Alınmak İstenen Verinin Bulunamaması Durumu) Unauthorized (Kullanıcının İşlem Yetkisinin Olmaması Durumu) Conflict (Aynı Veriyi İki Kere Kaydetme Durumu) 279
279
280
280
281
284
287
290
290
291
292
294
8 ROUTING (YÖNLENDİRME) Routıng Nedir? Varsayılan Route Yapılandırması Route Oluşturma (Haber Sitesinin Route Ayarları) 299
299
300
302
İÇİNDEKİLER
Anasayfa’ya Özel Route Oluşturma (Anasayfa) Kategori Sayfalarına Özel Route Oluşturma (kategori/KategoriAdı) Haber Sayfalarına Özel Route Oluşturma (haber/Kategoriler/…/HaberAdı) Route Constraints (Rota Kısıtlamaları) Regular Expressions (Düzenli İfadeler) ile Rota Kısıtlama Regular Expression Nedir? Regular Expression Deseni Oluşturma Regular Expression ile Cep Telefonu Deseni Oluşturma Regular Expression ile Rota Kısıtlama İşlemi HttpMetodConstraint ile Rota Kısıtlama Kullanıcı Tanımlı (Custom) Rota Kısıtı Oluşturma (IRouteConstraınt) Web API Route Yapılandırması Convention Based Routing Web API’de ControllerAdı/ActionAdı/Parametre Route Yapılandırması Attribute Based Routing Action’a Route Tanımlama ApiController’a Route Tanımlama 305
306
306
314
319
319
319
319
320
321
322
323
326
327
328
331
331
335
9 FILTERS (FILTRELER) Filtreleme Nedir? Filtre Çeşitleri Action Filter Action’a ActionFilter Tanımlama Controller’a ActionFilter Tanımlama Result Filter Exception Filter (Hata Filtresi) Uygulama Bazında Hata Yakalama Türüne Göre (Controller ve Action Bazında) Hata Yakalama Uygulamaya Özel Hata Filtresi Oluşturma Authorize Fılter (Yetki Filtresi) 337
337
338
338
339
343
345
350
352
354
356
357
10 HELPERS (YARDIMCI METODLAR) Helper Nedir? HTML Helpers (HTML Kontrolleri) Link Oluşturma (ActionLink) 361
361
363
364
XIII
XIV
ASP.NET MVC 5
Form Oluşturma (BeginForm, EndForm) 365
Yazı Görüntüleme (Label) 367
Metin Giriş Kutusu (TextBox) 369
Çok Satırlı Metin Giriş Kutusu (TextArea) 370
Onay Kutusu (CheckBox) 372
Seçim Butonu (RadioButton) 373
Açılan Liste Kutusu (DropDownList) 375
Liste Kutusu (ListBox) 377
Şifre Giriş Kutusu (Password) 379
Gizli Veri Kontrolü (Hidden) 380
Strongly Typed Helpers 381
LabelFor 387
TextBoxFor 390
TextAreaFor 392
CheckBoxFor 393
RadıoButtonFor 394
DropDownListFor 396
PasswordFor 397
ValidationMessageFor 398
Web Helper 400
Grafiksel Rapor Oluşturma (Chart) 401
Bir Veri Kaynağı ile Chart Oluşturma 402
Birden Fazla Veri Kaynağı ile Chart Oluşturma 404
Chart’ın Dosya Türünü Değiştirme 406
Chart’ın Türünü Değiştirme 407
Noktalı Grafik Oluşturma (Point) 408
Baloncuk Grafik Oluşturma (Bubble) 409
Çizgi Grafik Oluşturma (Line) 409
Parabol Eğrili Grafik Oluşturma (Spline) 410
Yatay Çubuklu Grafik Oluşturma (Bar) 410
Dikey Çubuklu Grafik Oluşturma (Column) 411
Alanlı Grafik Oluşturma (Area) 412
Parabol Eğri Alanlı Grafik Oluşturma (Area) 412
Pasta Dilimli Grafik Oluşturma (Pie) 413
Ortası Boş Pasta Dilimli Grafik Oluşturma (Doughnut) 413
Resim Görüntüleme ve İşleme (WebImage) 414
İÇİNDEKİLER
Resmi Görüntüleme (Write) Resmi Sağa Döndürme (RotateRight) Resmi Sola Döndürme (RotateLeft) Resmi Yatay Yönde Ters Çevirme (FlipHorizontal) Resmi Dikey Yönde Ters Çevirme (FlipVertical) Resmi Yeniden Boyutlandırma (Resize) Resmi Kesme (Crop) Resmin Üzerine Yazı (Filigran) Ekleme (AddTextWatermark) Resmin Üzerine Resim (Filigran) Ekleme (AddImageWatermark) WebGrid Kullanımı WebGrid Oluşturma GetHtml Metodunun Kullanımı Tanımlanan Sütunları Görüntüleme Varsayılan Sütun Sıralamasını (defaultSort) Tanımlama Sayfalama Sayfalamada İlk Sayfa ve Son Sayfa Linklerini Tanımlama Sütun Bazında Sıralama Satırın Tamamını Tıklanabilir Yapma WebGrid Verilerinde Arama Yapma WebGrid Verilerini Excel’e Aktarma Helper Metodu Oluşturma Custom Class ve Static Metod ile Helper Oluşturma Extension Metod ile Helper Oluşturma 11 ASP.NET MVC İLE DURUM YÖNETİMİ Asp.Net MVC ile Durum Yönetimi Durum Yönetimi Kavramı Sunucu Tabanlı Durumlar Oturum Yönetimi (Session State) Session Tanımlama Session Değerini Okuma Session Değerini Silme Session Varlığını Kontrol Etme Session Yaşam Süresini Belirleme Session Başlatma ve Bitirme Uygulama Durum Yönetimi (Application State) 415
416
417
418
419
420
421
422
424
426
426
428
429
430
430
431
432
432
436
439
445
446
448
451
451
451
452
452
452
454
454
455
456
457
459
XV
XVI
ASP.NET MVC 5
Application Değeri Tanımlama Application Değerini Okuma Application Değerini Silme Application Nesnesinin Varlığını Kontrol Etme İstemci (Client) Tabanlı Durum Çerezler (Cookıe) Cookie Tanımlama Cookie Değerini Okuma Cookie Değerini Silme Cookie’nin Varlığını Kontrol Etme Cookie Yaşam Süresini Belirleme 12 JQUERY Jquery Nedir? Jquery ile Kodlama Değişken Tanımlama Değişken İçerisine Fonksiyon Tanımlama Sayfa Yüklendikten Sonra İşlem Yapma Butona Click Olayı Ekleme Dizi Tanımlama ve Değerlerini Alma (each) HTML Elemanını Seçme Etiket (Tag) ile Seçme CSS Sınıfı (Class) ile Seçme Kimlik (Id) ile Seçme İsim (Name) ile Seçme Son Elemanı Seçme (last) Index’e Göre Eleman Seçme (eq) Özelliğe Göre Belirli Türden Eleman Seçme Etiketin Alt Etiketlerini Seçme Elemanın Tanımlanan Özelliğinin Olup Olmadığını Kontrol Etme (is) HTML Elemanlarını Filtreleme İlk Elemanı Seçme (first) Son Elemanı Seçme (last) Tanımlanan Özelliğin Olmadığı Elemanları Seçme (not) Index Numarasına Göre (Eşit Olan) Eleman Seçme (eq) Index Numarasına Göre (Büyük Olan) Eleman Seçme (gt) 459
460
460
461
461
461
462
464
464
465
466
467
467
467
469
470
470
471
472
473
473
475
476
477
479
480
481
482
485
486
487
487
487
487
488
İÇİNDEKİLER
Index Numarasına Göre (Küçük Olan) Eleman Seçme (lt) Seçimin Altındaki İlk Nesneyi ve Alt İlk Nesnelerini Seçme (first-child) Tanımlanan Özelliklere Sahip Olan Nesneleri Seçme (has) Gizli Nesneleri Seçme (hidden) Gizli Olmayan Nesneleri Seçme (visible) Pasif Nesneleri Seçme (disabled) Aktif Nesneleri Seçme (enabled) Açılan Liste Kutusunun Seçili Elemanını Alma (selected) Seçili Onay Kutularını Alma (checked) HTML Elemanlarının Yönetimi Sayfadaki Tüm Nesneleri Alma (get) Sayfadaki Bir Nesneyi Index Numarasına Göre Alma (get) Eleman Sayısını Alma (size) Elemanın Id Bilgisini Alma (id) Elemanın İsim Bilgisini Alma (name) Elemanın Yazı İçeriğini Alma (text) Elemanın HTML İçeriğini Alma (html) Elemanın Value Değerini Alma (val) Elemana HTML Ekleme (append) Eleman Kopyalama (clone) Elemandan Sonraya Eleman Ekleme (insertAfter) Elemandan Önceye Eleman Ekleme (insertBefore) Jquery ile AJAX İşlemleri Jquery AJAX Fonksiyonları $.ajax Fonksiyonu $.getJSON Fonksiyonu $.post Fonksiyonu Örnek Uygulamalar Asp.Net MVC ile Çoklu Dosya Yükleme Tablodaki Tüm Kayıtları Seçme / Tüm Seçimleri Kaldırma Tabloda Seçili Satırları Silme Metin Kutusuna Yazılan Yazının Karakter Sayısını Hesaplama İlişkili Açılan Liste Uygulaması (İl - İlçe) 13 ÜYELİK İŞLEMLERİ Üyelik İşlemi Nedir? 488
488
489
489
489
490
490
490
490
491
491
492
492
492
493
493
493
494
494
495
495
496
497
498
498
503
504
508
508
513
517
520
523
531
531
XVII
XVIII
ASP.NET MVC 5
Asp.Net MVC 5 Üyelik Sisteminin Kurulumu Üyelik Veritabanı Üyelik Veritabanında İşlem Yapma Kullanıcı Yönetimi (UserManager) Kullanıcı Ekleme (Create) Kullanıcıları Listeleme Kullanıcı Güncelleme (Update) Adına Göre Kullanıcı Bulma (FindByName) Id’sine Göre Kullanıcı Bulma (FindById) Kullanıcının Şifresi Var Mı Kontrolü (HasPassword) Kullanıcıya Şifre Ekleme (AddPassword) Kullanıcının Şifresini Değiştirme (ChangePassword) Kullanıcının Şifresini Silme (RemovePassword) Rol Yönetimi (RoleManager) Rol Ekleme (Create) Rolleri Listeleme Rol Güncelleme (Update) Adına Göre Rol Bulma (FindByName) Id’sine Göre Rol Bulma (FindById) Rol Var Mı Kontrolü (Exists) Rol Silme Kullanıcıyı Role Ekleme (AddRole) Kullanıcı Rolde Mi Kontrolü (IsInRole) Kullanıcının Rollerini Listeleme (GetRoles) Kullanıcının Rolünü Kaldırma (RemoveFromRole) Kullanıcı Kimlik Doğrulama İşlemleri (Authentication) Kullanıcıya Sisteme Giriş Yaptırma (AddLogin) Örnek Uygulamada Kullanıcı Giriş Sayfası Oluşturma Sisteme Kullanıcı Girişi Yapıldı Mı Kontrolü Sisteme Giriş Yapan Kullanıcı Bilgisini Alma Kullanıcıya Sistemden Çıkış Yaptırma (SignOut) 14 AREA Area Nedir? Area Oluşturma Area’daki Action’lara Erişim 533
534
535
536
536
540
543
546
548
550
550
555
560
565
565
570
572
575
576
578
578
581
584
584
587
589
589
589
593
593
595
597
597
598
599
İÇİNDEKİLER
Area’nın Route Yapılandırması Area’nın Dizin İsmini Değiştirme 600
601
15 TEST 603
Test Driven Development (TDD) Nedir? 603
Red Cycle (Hatalı Sonuç Döndüren Test) 606
Green Cycle (Başarılı Sonuç Döndüren Test) 607
Refactor (Kod Temizleme) 607
Unit Test (Birim Testleri) 608
Unit Test Nedir? 608
Asp.Net MVC ile Unit Test Projesi Oluşturma 609
Unit Test Metodlarını Çalıştırma Yöntemleri 612
Visual Studio’nun Kısayolunu Kullanma 612
Test Explorer Üzerinden Testleri Çalıştırma 612
Test Metodlarının Kodlaması 614
Assert.AreEqual (Eşitlik Testi) 615
Assert.AreNotEqual (Eşitsizlik Testi) 615
Assert.AreSame (Aynılık Testi) 616
Assert.AreNotSame (Aynı Olmama Testi) 616
Assert.Faıl (Başarısızlık Testi) 617
Assert.IsFalse (Değerin False Olması Testi) 617
Assert.IsTrue (Değerin True Olması Testi) 618
Assert.IsNull (Değerin Null Olması Testi) 618
Assert.IsNotNull (Değerin Null Olmaması Testi) 618
Test Metodu Çalışmadan Önce Kod Çalıştırma (TestInitialize) 619
Test Metodu Çalıştıktan Sonra Kod Çalıştırma (TestCleanUp) 620
Test Metodundan Controller’daki Verilere Erişim 622
Test Metodundan ViewBag’e Erişim 622
View’a Gönderilen Model’e Erişim 623
View’dan Farklı Bir Vıew’a Yönlenme (RedirectToAction) Durumuna Erişim 624
View İsmine Erişim 625
Action’ın Model’inin Veri Türüne Erişim 626
Action’ın Geri Dönüş Türüne Erişim 627
Json Türünden Verilerin Testi 628
Web API Testleri 631
Action’dan Alınan Nesnenin Testi 631
XIX
XX
ASP.NET MVC 5
Action’dan Alınan Listenin Testi Action’dan IHttpActionResult Türünden Dönen Başarılı İşlemin Testi Action’dan IHttpActionResult Türünden Dönen Veri Bulunamadı
Durumunun Testi 632
633
635
16 PROJEYİ TANIMLAMA 637
Temel Kavramlar 637
Sunucu Nedir? 637
Hosting (Barındırma) Nedir? 638
Windows Azure Nedir? 639
Windows Azure’un Avantajları 639
Windows Azure’un Dezavantajları 639
Domain (Alan Adı) Nedir? 639
Subdomain (Alt Alan Adı) Nedir? 640
Asp.Net MVC Projesini Yayınlama Yöntemleri 640
Hosting Üzerinde Proje Yayınlama 641
Web Deploy 642
Web Deploy Package 644
FTP 646
File System 647
Projeyi Sunucuda Yayınlama 648
Azure Üzerinde Asp.Net MVC 5 Projesini Yayınlama 651
Windows Azure Hesabı Oluşturma 651
Yeni Web Sitesi Tanımlama 653
Veritabanı Oluşturma 655
Projeyi Wındows Azure Üzerinde Yayınlama 656
Windows Azure Üzerinde Veritabanı Yönetimi 659
Download

İÇİNDEKİLER 1 TEMEL BİLGİLER 1 .Net Framework Nedir? 1 .Net