Bu classı biraz açıklamak gerekirse, tam olarak şu işleri yapıyor.

Benzer belgeler
MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Proje 1. Arayüz Tasarımı

Android Ders Notları

ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Java JDK (Java Development Kit) Kurulumu:

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

GEÇERLİLİK KONTROLLERİ VALİDATİON CONTROLS. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

BLGM 354 DENEY 1 * GİRİŞ

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

SHOP INGENICO DOKUMANI

GRAFİK TASARIM. ACTION SCRIPT 3.0 Ders1 YARD. DOÇ. DR. MEHTAP YALÇINKAYA

NESNEYE YÖNELİK PROGRAMLAMA

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

YZM 3215 İleri Web Programlama

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Sqlmap pyhton dili yazılarak geliştirilmiş Sql injection için testerlara son derece yardımcı olan bir araçtır.


C için tümleşik geliştirme ortamı (IDE) kurulumları

VERİ TABANI ve YÖNETİMİ

ADO.NET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

HSancak Nesne Tabanlı Programlama I Ders Notları

5S7 OYUN YAZIYORUM GENEL BAKIŞ A. PROJE - YILDIZ TOPLAYAN ÇOCUK

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Kabuk Programlama (Bash)

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Nevşehir Hacı Bektaş Veli Üniversitesi Moodle Uzaktan Eğitim Sistemi Öğretim Elemanı Bilgilendirme Kılavuzu

WebInstaller. 1. Kurulum Đçin Gereksinimler

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Windows Server 2012 Active Directory Kurulumu

Bölüm 10: PHP ile Veritabanı Uygulamaları

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Uygulama web, ios ve Android platformlarında sorunsuz bir şekilde çalışmaktadır.

«BM364» Veritabanı Uygulamaları

Nesneye Dayalı Programlama Laboratuvarı

C# ile NJ Simulatöre Bağlanmak

Diziler İndisli Değişkenler

Calistir diye normal bir java classı ekleyelim.aynı pakete ekleyelim.public ve main metodu ekleyelim.

Java Class Yapısında Finalize Metotunun Kullanımı

Scratch 2.0 GOL OYUNU

Geliştirme Klavuzu İlk Uygulama Hello World

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

Polisan Bayi Portalı Kullanıcı Dokümanı.

XSS Exploitation via CHEF

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BAY.t Entegre. Aşağıdaki script fiyat gör programının ayarlar sayfasındaki sorgu cümlesi alanına yapıştırılıp Sorguyu Db ye Yükle tıklanır

1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

TSN Portal. Kullanım Kılavuzu

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

A- VERİTABANI BAĞLANTISINI HAZIR NESNE KULLANARAK YAPMA

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Ek Uygulama 1: Windows 7 Güncelleme İşlemleri

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Portala Giriş. 2. Portalın Kullanımı Genel

GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Turquaz Windows kurulum dökümanı. ftp://ftp.mirror.ac.uk/sites/ftp.postgresql.org/binary/v7.3.1/windows/pgsql731wina1.exe

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Bu uygulamayı yapabilmek için SQL Server'da Query Analyzer kullanabilmekle beraber, ADO.NET bilgisine sahip olmanız gerekir.

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Kullanım Kılavuzu

TESTOSİS KULLANIM KLAVUZU Sisteme Giriş: adresinden yapılmaktadır.

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

DIGITURK PLAY PLUS PROMOSYON KODU KULLANMA KLAVUZU. LG TÜRKİYE V2.0 Temmuz 2015

Tek dosyalı projeler (siteler) üretmek

Flow Kullanım Klavuzu Mart 2014

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

1.adım : Sql serverda Stored procedure oluşturmamız gerekiyor. Şu adımları izliyoruz.

GOOGLE DRIVE KULLANIMI Google Drive Kullanmak için öncelikle bir Gmail hesabınız olması ve onunla giriş yapmanız gerekiyor.

YZM 3215 İleri Web Programlama

1-) Veritabanımıza bağlanmak için bir SqlConnection nesnesi, 2-) Veritabanındaki bilgileri kullanmak (seçme, kaydetme, silme, güncelleme) için

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

Response : Sunucunun istemciye veri yollamasını

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

WEB TASARIM. CSS, IFRAME, TEMPLATE, SLICE, INCLUDE(php komutu) Tarık ÖZEL

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Blogcu Kullanma Kılavuzu

Php İle Mysql Veritabanından Bilgi Çekme

BİL-142 Bilgisayar Programlama II

NJ-MX2 ETHERCAT HABERLEŞMESİ

19 Şubat 2016 Cuma

MOBİL UYGULAMA GELİŞTİRME

Transkript:

İlk hazırladım MVC başlangıç dokümanından sonra (http://tuncgulec.com/mvc-projeolusturma/ adresinden indirilebilir) ikinci olarak bu oluşturduğumuz projenin benzeri, database işlemlerini yapan bir mvc projesi oluşturmak. Önceki yazımı okuduğunuzu var sayarak işlemlere geçmek istiyorum. İlk amaçlarımızdan biri kendi Entitymizi yazmak olacak. Bunun çok daha hızlı olduğunu ve gerekli gereksiz inherintence den kurtulduğumu göreceksiniz. Büyük işlerimizin yapıldığı classlarımızı yine Models altında kendi isimleriyle toplayacağız. Örneğin kullanıcı ile ilgili olan işlemleri kullanıcı classında biriktirip oradan toplayacağız. İlk olarak database bağlantımızı sağlayan classımızı yazdık. Bu claası db.cs isminde models klasörü altında oluşturduk. Daha öncede belirttiğim gibi büyük işleri yapan classlarımız burada toplayacağız. Görünüm aşağıdaki gibi olacaktır. Bu classı biraz açıklamak gerekirse, tam olarak şu işleri yapıyor. Veritabani isimde erişim belirleyicisi public olan bir class tanımladık. Ve bu classın bir kurucu methodu var. Kurucu method neydi hatırlatayım. Class sınıfından inherit alan bir nesnenin create edilme esnasında, yani kullanıma hazır hale getirilmesi esnasında çalışmasını istediğimiz kodları yazdığımız yere kurucu yani constructor method diyorduk. Özetle bir class create edilir edilmez çalışmasını istediğimiz kodları yazdığımız yerdi kurucu method. Kurucu methodun kurucu olabilmesi için bazı kurallar vardı. Bunlardan biri class ile aynı isimde olması diğeri erişim belirleyicilerinin de aynı olmasıydı. Yani class public ise kurucusu da public olmalıydı. Bu kurucu method ne yapıyor peki. Bu class creat edilir edilmez database bağlantısını yapmaya çalışıyor ve eğer bağlantı sağlanırsa bize out ile bir değer döndürüyor. Bağlı ise true, değilse false döndürüyor. Peki kurucu method olmasa ne olurdu. Kurucu method içine yazdığım kodları başka bir method altına yazmam ve database bağlantısını sağlamak için o methodu çağırmam demekti. Bu da bana database bağlantısı sağladığım her kod satırında ek kod maliyeti olarak geri dönecekti.

Tam olarak şöyle. Kurucu methodum olmasaydı ve bu bağlantı kodunu bir başka methoda yazmak zorunda olsaydım şöyle olacaktı. veritabani vt = new veritabani vt(); vt.baglan(); Evet ilk bakışta sadece kırmızı ile belirtilen kod parçacığı fazla gibi görünebilir. Ancak bunun her bağlantı gerektiği alanlarda kullandığınızı düşünün, onlarca satır kod fazlası olacaktı. Biz kurucu method ile bunu sadece veritabani vt = new veritabani vt(); diyerek kullanabiliyoruz. Db.cs dönecek olursak, veritabani isimli class create edilir edilmez database bağlantısı sağlamaya yarayan kodlarımız çalışacaktır. (Kendi örneklerinizde yapabilmek için public SqlConnection baglantimiz = new SqlConnection("Data Source=.;Initial Catalog=dbLoginMvcTest; Integrated Security=SSPI;timeout=10000");) Satırı kod bloğundaki tırnak içindeki Catalog yazan yerdeki = işaretinden sonra kendi database adınızı vermelisiniz. Şimdi diğer bir adım database içinde bir tablo oluşturmak. Benim tercihim MsSql oldu. Oysa VS nin her database bağlantı kurma yeteneği mevcut. Bazılarında ek kütüphaneler, apiler gerekebilir. Tablonuzda aşağıdaki resimde olduğu gibi alanlar olmalı. Tabloyu tamamladıktan sonra sayfalarımızı oluşturmaya geçelim. Üç sayfamız olacak. Birincisi anasayfamız, diğeri giriş formunun olduğu sayfa, diğeri giriş yapan kullanıcının görebileceği özel bir sayfa. Bu sayfaya giriş yapmayan kullanıcıların görmesini erişmesini engelleyeceğiz. Bunun yolu da session kurallarından geçiyor. Bu nedenle dilerseniz önce sessionlarımızı ayarlayalım. Bunun içinde global.asax dan yararlanacağız. Global.asax varsayılan olarak sadece bir method ile geliyor. Oysaki webform uygulamalarında bu dosya eklendiğinde tüm hazır methodları ile birlikte geliyordu. Bunlardan biride Session_Start methoduydu. Bize gerekli olan da tam olarak bu method. Burada olmaması bize engel değil. Bizde ekleyebiliriz.

Yukarıda görüldüğü gibi Session_Start methodu yok. Eklendikten sonraki hali aşağıdaki gibi. Bu komutu biraz açıklamak istiyorum. Kullanıcının giriş yapıp yapmadığını kontrol edeceğimiz session adı kullanici_id isimli sessiondır. Burada sessionın daha önce oluşturup oluşturulmadığını

kontrol etmemiz gerekir. Integer bir değer taşıyan sessionlar her ne kadar kendilerine atandıkları değeri taşıyabilseler de birer objedir. Bizim kontrol edeceğimiz değer bir integer değer olduğundan bunu kontrol ederken hata almamız kaçınılmazdır. Çünkü değeri atanmayan bir session henüz obje olacağından ve biz bunu kontrol ederken integer olarak sorgulayacağımızdan, objeyi integera dönüştüremediğinden hata verecektir. Bizde bu hataya engel olmak için oturum başladığında, yani Session_Start olduğunda, kontrol edeceğimiz sessiona varsayılan bir değer atıyoruz. Bu da etkisiz elaman olacağını düşündüğümüz 0 değeridir. Sayfalarımızı ekleyelim. İlk Sayfamız Home altında index.cshtml. (Eğer bu adımı bilmiyorsanız ilk dokümanı inceleyiniz. http://tuncgulec.com/mvc-proje-olusturma/) Sonra yine Home altında GirisFormu ve BanaOzel diye iki view oluşturalım. Sayfaları oluşturmamız bittikten sonra browserdan adres satırının sonuna Home/banaozel yazdığımızda giriş yapılmadan dahi sayfanın görüntülendiğini göreceksiniz. Bunun nedeni sessionlarla herhangi bir kontrol yapmamamızdır. İlk önce bu sorunu giderelim. Giriş yapmayan kullanıcıların bu sayfayı görmesini engelleyelim. BanaOzel.cshtml sayfası içine aşağıdaki kodları yazalım. Görüntü aşağıdaki gibi olacaktır.

Dikkat ettiğiniz üzere sessionın değerine direkt ulaşamadık. Type Cast yapmak zorunda kaldık. Bunun nedeni yukarıda bahsettiğim sessionların birer obje olmasıdır. Bu kontrolü koyup çalıştırdıktan sonra BanaOzel sayfasına ulaşamadığımız, direkt anasayfaya yönlendirildiğimizi göreceksiniz. Şimdi sırada kullanıcının tüm işlemlerini içeren methodları barındıran bir class yazmak. Bu class sadece kullanıcılarla ilgili işlemleri barındıracak. Dağıtık çalışmayacağız. MVC bir nevi düzenli olmaya zorluyor elbette. Models üzerinde sağ tuşa basıp kullanici isminde bir class ekleyelim.

Bu classı ekledikten sonra başındaki namespace leri kaldırıyoruz. Zorunlu değil. Ancak bu classı başka bir yerde kullanmak istediğinizde sorun yaşamayacaksınız. Classa ait giriş methodunu yazdık. Bu method giriş başarılıysa bize true değilse false döndürecek. Ne out ile nedenini döndürecek. Şimdi de controller içine bu classı kullanan methodumuzu yazalım. Unutmayın buraya yazacağımız method çok az satır kod olacak. HomeController içindeki giriş yapacağımız method form bilgilerini post yöntemi ile alacağı için methodumuzun tipini [HttpPost] tipinde yapacağız. Yazdığımız method aşağıdaki resimdeki gibi olacak.

Yukarıdaki resimde açıklamam gereken yerler aşağıda sıralanmıştır. 1) Girilen bilgileri, işlemi yapan methoda post yöntemi ile göndereceğimizden using ile başlayan bu düzenli komut satırını yazdık. Html.Beginform methodu 4 parametre ile çalışır, ilk ikisi string değişken alıyor. 2) ActionName dir. Action name HomeController altına yazdığımız aşağıdaki karşılayıcı methoddur. Ancak şimdilik bu methodun içini yazmadık. public ActionResult GirisYap() { } 3) ControllerName dir. Bu da karşılayıcı methodun yani 2. Olarak belirtilmiş methodun bulunduğu controller adresidir. 4) Doldurduğumuz bilgilerin hangi yöntem ile gönderileceğini belirtiyoruz. GET / POST Formun içeriğine de iki input oluşturdum. Şimdi GirisYap isimli karşılayıcı methodumuzun içini yazalım. Kodlarımız aşağıdaki gibi olacak.

Projeyi çalıştırdığımızda giriş formuna giderek giriş yapmayı deneyelim. Butona bastığımızda bu ekranda kaldığımızı gözlemleyeceksiniz. Tablomuza giderek bir kullanıcı ekleyelim. Daha sonra banaozel view gidelim ve kodlarımızı düzenleyelim. Tabloya eklediğimiz kullanıcı bilgileri ile giriş yapmaya çalışalım. Görüntü aşağıdaki gibi olacaktır.