Asp.net MVC(Model View Controller) Örnekli Anlatim



Selamlar, Standart, yabancı kaynaklardan çevrilmiş cümleler yerine biraz daha anlışır şekilde anlatmaya çalışacağım. Hızlıca giriş yapıcak olursak MVC > Model View Controller olarak bir çok yerde okumuşsunuzdur. Peki bunların anlamları nelerdir ? - Model : Sayfamızda kullanacağımız class'tır. Yani bir ik formu yapıcaksak bize lazım olucak özellikler nelerdir ? Bu sorunun cevabında oluşan class yapımıza Model diyoruz. Örnek vermek gerekirse ik sayfamızı modelliyelim. Models klasörünün içine yeni bir class oluşturuyoruz.


	public class HumanResourcesModel
	{
		public string Name{get;set;}
		public string Surname{get;set;}
		public string Email{get;set;}
		public string Department{get;set;}
	}

Bu model bizim yapmayı düşündüğümüz ik formunda alacağımız bilgiler diyelim. Class tamam, şimdi görsel tarafa geçelim. - View : Kullanıcının göreceği arayüz bölümüdür. Views klasörü altında kullanılır. Yine ik formunda ilerlersek eğer Views klasörü altına "Human" adında bir klasör açalım. Bu klasörün altına new item olarak "View" ekliyelim. Bu View'in adını "Index" koyabiliriz. Sayfamızı açtıktan sonra sayfanın en üstüne biraz önce oluşturduğum modeli ekliyelim.

@model Namespace.Models.HumanResourcesModel

Sayfamızın yüklenmesi ve post edilmesi işlemleri için bir kod bölümüne ihtiyaç duyuyorum. Burda ise Controller devreye giriyor. - Controller: Proje içerisinde Controller klasörü altında kullanılır. Aslında Model gibi bir classtır. Ancak "System.Web.Mvc.Controller" nesnesinden miras almış bir class'a Controller diyebiliriz. Biraz önce View açarken "Human" klasörü ile beraber altına "Index" cshtml açmıştık. Bu sayfayı kontrol edicek bir Controller açmamız gerekiyor. Controller klasörüne yeni bir kontrol ekliyoruz. Adınıda Views klasörü altında açtığımız "Human" klasörü ile aynı koyuyoruz. Human klasörünün içine açtığımız "Index" cshtml sayfası adında ise HumanController içinde yeni bir ActionResult oluşturuyoruz.

  	public ActionResult Index()
        {
          //Sayfa ilk açıldığında buraya girer.
	 //Klasik web form ortamında ki Page_Load() diyebiliriz.
            return View();
        }

Sayfamız yüklenirken yukarda yazdığımız kod bloğuna giricektir. Peki burda neler yapabiliriz ? IK formu sayfasının daha önce kayıtı almış olabiliriz. Bu kayıtı direk olarak sayfaya basmak isteyebiliriz.

  	public ActionResult Index()
        {
		//Burda dinamik data çekilip model doldurulabilir..
		
        	var model = new HumanRecores{
		Name = "Samet",
		Surname ="Çınar",
		Email = "sametcinar@msn.com",
		Department= "Software Developer"
		};

            return View(model);
        }

Sayfa açılırken doldurduğumuz modeli sayfamızda "@Model.Name", "@Model.Surname" tarzında kullanabiliriz. Html.TextBoxFor(s=>s.Name) tarzında kullandığımızda ilgili textbox dolu gelmiş olur. Peki, sayfa açıldı. Kullanıcı ilgili text alanlara bilgileri girdi. Bu datayı server tarafına nasıl gönderebiliriz ? Yine "Index" adında bir ActionResult yazabiliriz. Fakat bu Index'in başına attribute olarak [HttpPost] eklemeliyiz. Yazdığımız bu Index'e parametre olarak ise sayfaya bastığımız modeli vereceğiz.

	[HttpPost]
  	public ActionResult Index(HumanResourcesModel model)
        {
		string name = Model.Name;
		string surname = Model.Surname;
		//Burda sayfadan gelen datayı alıp server tarafına gönderip istediğimiz kayıtı alabiliriz.

		//İşlem bittikten sonra kullanıcıyı tekrardan IK sayfasının Load kısmına gönderebiliriz.
            return RedirectToAction("Index");
        }

İki tane Index adında ActionResult kod bloğumuz oldu. Sayfa post olduğunda [HttpPost], sayfa load olduğunda ise normal Index ActionResult'ına giricektir.

Yorum Yaz