Asp.Net MVC

Area Kullanımı

Eğer sitemizde birbirinden farklı iki arayüzümüz ve iş bölümümüz varsa area kullanırız. Örneğin sitemizde bir ziyaretçilerin gördüğü kısım, bir de site sahibinin gördüğü panel kısmı olacaksa bu admin kısmını Area ile yaparız. Normal root dizinimiz (projenin ana dizini) ziyaretçinin gördüğü kısımdır Project Sağ Tık>Add>New Scaffold Item>Area : Admin isimi verdik Aynı şekilde açılan alanlara Controller…

Hataları ELMAH ile Loglama (Error Logging Method And Handlers)

Kullanıcı bir hata aldığı zaman ne tür bir hata aldığını öğrenmemiz kontrol edip ilerde oluşabilecek hataları minimize etmemizi sağlar. ELMAH, hataları loglamamızı sağlar. I.Project SağTık>Manage NuGetPackages>Browse : elmah aranıp yüklenir II. Elmah’ın loglamalarını görmek için domain/elmah.axd uzantısına gidilir. III.Web.config’teki customErrors mode off yapılır IV. Şu anda yapılan hatalar Elmah’ta görünür fakat sayfayı kapatıp açtığımızda kaybolur.…

Kullanıcıyı Hata Sayfasına Yönlendirme

Örneğin bir sayfada sıfıra bölünme vs bir hata aldık diyelim. Normalde sayfa hatayı ve kodlarımızı direk olarak kullanıcıya verir tabi biz bunu istemeyiz hata oluştu şeklinde bir sayfaya yönlendirmek isteriz I.Project/Web.config dosyasına geçip etiketinin içerisine customErrors mode=”On” etiketini ekleriz. Ayrıca sıfıra bölünme vs hatalar değil de olmayan url’e gittiği zaman da hata sayf yölendirmek için…

BundleConfig (Javascript ve Css dosyalarını birleştime ve minify etme)

Not:Bundle işlemi proje bittikten sonra en son yapılır aksi halde yeni eklenen js, css dosyalarını tekrar tekrar birleştirmek gerekir ve birleştirilen dosyalardaki hata bulma işlemi zorlaşırBundle: sarmak, destelemek, birleştimek anlamına gelir. Biz sayfamızı yenilediğimiz zaman (örn Department/Index) Tarayıcıda Sağ Tık>İncele>Network tabından kaç tane request gittiğine bakabiliriz. Örn bir js dosyasını yüklemek için bir request gitmiş…

OutputCache Kullanımı

Biz websitemizde örneğin personeller’e tıkladığımızda Read işlemi yapılır ve dbden veri çekilip kullanıcıya döndürülür. Bu personel listesi sürekli anlık güncellenen bir alan değildir yani ort. haftada bir ya da iki personel eklenir. Biz burada dbden Read vs işlemini bir kez yaptırıp cache belleğinde bu veriyi 30sn gibi belirli sürelerde tutabiliriz. Yani kullanıcı tekrar aynı alana…

Ajax.BeginForm Kullanımı

Daha önceki örneklerimizde ekleme işleminden sonra listenin olduğu view’a git (RedirectToAction) yaptık. Fakat ardarda ekleme işlemleri yaptığımız yerlerde bu listeye dönmesini istemeyiz. I. Bunun için formumuzu Ajax.BeginForm’a çevirdik ve dedik ki post işlemi olunca sen sonucu message id’li elemente döndür.Formun üzerine de message id’li bir div yazdık II. Biz ne döndürmek istiyoruz örneğin x departmanı…

Html.RenderAction Kullanımı

HtmlRenderAction’u örneğin kullanıcı bir e ticaret sitesinde hangi sayfaya giderse gitsin sepette 5 ürünün var, 10 ürünün var gibi sabit alanlara dbden veri çekmek için kullanırız. I.Bunun için sayfanın dbye gidip sepetteki toplam ürün sayısı gibi değeri çekmesi lazım yani veri çekeceğimi< için Controllerda bir ActionResult yazacagız. Biz örneğimizde Toplam maaşı ve toplam çalışanı çekelim…

Ajax.ActionLink Kullanımı

Örneğimizde departmanların listelendiği alana bir buton daha ekleyelim ve tıklayınca o departmana ait personeller, departman listesinin altında görünsün I. View/Department/Index.cshtml II. Controllers/PersonnelController/ListPersonnelsInThatDepartment (Personnel controller’ında bir ActionResult oluşturup bunu Department’a ait bir View’da yakalayacağız III. Views/Personnel/ListPersonnelsInThatDepartment.cshtml IV.Manage NuGetPackages>Jquery Ajax arattık > Microsoft.Jquery.Unobtrusive.Ajax package’ını kurduk _Layout’a gidip Scripts/jquery.unobtrusive.ajax.min.cs scriptini sürükleyerek Body’nin alt kısmına attık (Jquery’den sonra gelmek…

Scaffolding Kullanımı

Scaffolding, Asp.Net MVC’de, databaseimizin CRUD işlemlerini hazır olarak yapmasını sağlar (Yani tüm action ve viiewları otomatik oluşturur) I.Önce database’i oluşturduk ve Models/EntityFramework dizinine Entitymizi oluşturduk II.Controllers SağTık>Add>Controller>MVC 5 Controller with views, using Entity Framework>Model seçilir / Hangi Entity’nin kullanılacağı seçilir. Generate views denir ve Controller’a isim verilir

Jquery Datatable Plugin Kullanımı

Tabloya arama fonksiyonu, sayfalama, sıralama gibi birçok özelliği Jquery Datatable ile sağlayabiliriz. Project : Sağ Tık>Manage NuGetPackages>Browse : jquery.datatables>Install (install sadece js ve css dosyalarını indirmemizi sağlıyor internetten de manuel olarak ekleyebiliriz) I. Scripts>DataTables>jquery.DataTables.min.js ve dataTables.bootstrap.min.js dosyalarını sürükleyerek _Layout’umuzda ilgili alana (body’nin alt kısmına bıraktık) II. Content/DataTables/css>dataTables.bootstrap.min.css dosyasını da _Layout’umuzda csslerin bulunduğu yere ekledik III.…

Ajax ile Silme İşlemi

Normalde projemizde sil butonuna bastığımız zaman bir silme işlemi için ilgili Controller’ın Sil ActionResult’ına gidiyor, burada departmanı silip bizi iIndex’e yönlendiriyor ve Index’deki modeli tekrar dolduruyor. Dolayısıyla server’ı yormuş oluyoruz. Ajax ile bu işlemi server’ı yormadan yapabiliriz. I. İlgili View’a gittik ve a href=”Department/Delete/@departmanId butonumuzdaki href özelliğini kaldıralım ve btnDepartmentDelete class’ını ile data-id=”@department.Id” özelliğini verelim…

DateTipi Validation Kontrolü

Validation kontrolde hata çıktığı zaman tekrar yeni bir input girerken normalde script dosyası default olarak hata mesajını kaldırır. Fakat Date Tiplerde bu olmuyor bunun önüne geçebilmek için yeni bir script yazıp projemize ekleyelim. I.Scripts : SağTık>Add>JavaScript File : custom.js ismini verdik II. Views/Shared/_Layout’a gittik body içerisinde alt kısıma scriptimizi ekledik III. Input’umuzun bulunduğu Views/Personnel/PersonnelForm.cshtml formuna…

AntiForgeryToken Kullanımı

Diyelim ki bize biri Domain/Department/Save/?Name=ExampleDepartment şeklinde link attı ve tıkladık. Bu tarz injection ile şifre vs. kaydedip sisteme saldırabilir. AntiForgeryToken ile bunun önüne geçebiliriz. AntiForgeryToken controller arasında view arasında şifreli bir değer gönderer kontrol gerçekleştirir. I. Öncelikle View’a artık sen AntiForgeryToken ile çalış diyeceğiz bunun için View/Department/DepartmanForm.cshtml’e gittik form içersini bir yere @Html.AntiForgeryToken() kodunu ekledik.…

Client Side Validation

Server Side validation isminden de anlaşılacağı üzere Server tabanlıdır yani Server’a gidip validation’un doğruluğu kontrol edilip geri döner yani server’ı yorar fakat biz bu kontrolü kullanıcı bilgisayarında yaptırabiliriz. Project SağTık>Manage NuGetPackages > Browse : jquery unobtrusive > Microsoft.jQuery.Unobtrusive.Validation seçilip projeye dahil edilir. Sonrasında Scripts içerisinde oluşan jquery-validate.min.js ve jquery-validate-unobtrusive.min.js dosyaları _Layout’ta scripts alanına eklenir (Bu…

Server Side Validation

Kullanıcıdan aldığımız verilerin bazı kıstaslarda olması lazım örn telefon numarasını istediğimiz biri buraya harf kaydedememeli ya da ismi 50 karakterden az olmalı gibi bu kuralları önce entityde tanımlarız. Server Side validation isminden de anlaşılacağı üzere Server tabanlıdır yani Server’a gidip validation’un doğruluğu kontrol edilip geri döner yani server’ı yorar. Models>EntityFramework>PersonelModel.edmx>PersonelModel.tt>Personel.cs Sonrasında Controller’a gidip ilgili ActionResult’a…

Display Özelliği Kullanımı

Biz projemizde genellikle Html Helper’ları kullanırız burada @Html.LabelFor etiketi Entity’mizdeki ismi direk alır örn labelda DepartmentId görünüp Department’ları çektiğimi bir labelde bunu değiştirmek isteriz. Models>EntityFramework>PersonelModel.edmx>PersonelModel.tt>Personel.cs’e geldik ve isminde göstermek istediğimiz field’ın üzerine Display etiketini ekledik

Lazy Loading ve Eager Loading Kavramları

Sqle giden sorgu sayısını ve ne olduğunu görmek için: Sql>Tools>Sql Server Profiler. LAZY LOADING Lazy Loading’de sqle çok fazla sorgu gider örn for içerisinde herbir joinli sorgu için tekrar tekrar sorgu gider. Eğer 5-10 satırı listeleyeceksek sıkıntı çıkarmaz ama 500-600 tane satır listelediğimizde her bir satır için tekrar tekrar sorgu sıkıntı çıkarır. EAGER LOADING Eager…

EntityFramework ile Modelleri Oluşturma

Bizim burada amacımız databaseimizi ORM (Object Relational Mapping) aracığılıyda projemize aktarkmak. DbFirst>Önce MsSql’de database’imizi hazırladık. Models SağTık>Add>Folder : EntityFramework ismini verdik. EntityFramework SağTık>Add New Item>Data>ADO.NET Data Model : ExampleModel diye isim verdik>EF Designer from database>Next>New Connection : ServerName ve database seçilir>Ok>Next>Entity Framework 6x>Next>Database’deki neleri projeye dahil etmek istiyorsak seçeriz, Pluralize seçersek ORM’de örn Personnel’i Personnels…

Projeye Bootstrap ve Jquery’i Dahil Etme

Project : Sağ Tık>Manage NuGetPackages>Browse: Bootstrap aratılıp yüklenir.Views/Shared/_Layout sayfasına gidip html sayfasındaki title’ın altına Content/bootstrap.min.css sürüklenerek bırakılır. Aynı Sayfada etiketi içerisindeki en alt kısıma script dosyaları (Scripts/jquery-1.9.1.min.js ve bootstrap.min.js) eklenir. (Sayfa ilk açılışta css dosyaları çalışsın ama scriptler çalışmasın diye aşağı ekleniyor)

Layout ve Partial View Kullanımı

Sayfamızın sabit kalan kısmını (MasterPage) oluşturduğumuz View/Shared/_Layout.cshtml view’inde tutarız. Değişken alanımız ise bu alandaki RenderBody()’lerdir. Partial View Kullanımı Aynı dizine Add>View>Partial view seçerek _Layout’un belirli bir kısmını örneğin footer gibi ayrı bir View’da tutup _Layout’a çağırabiliriz. Böl parçala kontrol et mantığıyla kontrolümüzü kolaylaştırır Add>Partial View>_Footer.cshtml Add>Partial View>_Header

Controller’dan View’a Ver Taşıma

Controllers/DepartmentController’a geldik ve ActionResult’larımızı yazdık. View/Detay.cshtml Eğer string, id gibi tek bir değer taşıayacaksak ViewData/ViewBag kullanmak mantıklıdır ama bu şekilde object döndüreceksek Model kullanırız. Ayrıca örneğin Departman Bu Departmanlara bağlı Personelleri taşıyan bir model gönderececksek ViewModels klasörü altında oluşturup oradan çekeriz. View/Detay2.cshtml

Action Result Types

ActionResult’larla Controller’dan View’a string, int, json, model object gibi veriler döndürebiliriz.

Asp.Net MVC Proje Oluşturmak

Visual Studio>File>New Project>Web>Asp.Net Wep Application : Project_Name > Empty, MVC seçilerek devam edilir. Controller>Add Controller : ExampleController View/Department/Hello.cshtml (Hello’ya sağ click yaparak ya da folder ve view’ı manuel oluşturarak ekleyebiliriz.)

WordPress.com'da bir web sitesi veya blog oluşturun

Yukarı ↑

WordPress.com ile böyle bir site tasarlayın
Başlayın