Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET MVC Controller,Action ve View Ekleme

Bir Asp.NET MVC projesinde Controller nasıl oluşturulur.Bu Controller ile ilişkili View katmanında klasör ve bu klasör içindeki View elemanları adında Controller sınıfımızda ActionResult tipinden metodlar nasıl oluşturulur bunları inceleyelim.

Ben Visual Studio’dan “TestProje” adında bir Asp.NET MVC 2 Web Application projesi oluşturuyorum.

Öncelikle Controller sınıfının nasıl oluşturulacağını görelim.
Solution Explorer penceresinden, Controllers klasörünü sağ tıklayarak, Controller seçeneğine tıklayalım.Karşımıza çıkan pencere aşağıdaki ekran görüntüsü gibi olacaktır.

Bildiğimiz gibi Controller katmanında oluşturduğumuz herhangi bir Controller’ın adının sonuna “Controller” tagını getirme mecburiyetindeyiz.Visual Studio derleyicisi bize bu konuda yardımcı olmaktadır.Controller eklerken isim girilecek yeri seçili getirip sonuna “Controller” tagını ekli bir şekilde getirmektedir.

Ben örnek olarak Controller Name kısmına “BenimKontrolumController” adında bir değer giriyorum.

“Add action methods for Create, Update, Delete and Details scenarios”, bu ifade onay kutucuğunda yer almaktadır.Oluşturma, güncelleme, silme ve detay için Action metodların bu Controller’a eklensinmi eklenmesinmi sormaktadır.

Ben şimdilik onay kutucuğunu işaretlemiyorum ve Add butonuna tıklıyorum.

    public class BenimKontrolumController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }

“BenimKontrolumController.cs” adındaki Controller’ımız Controller katmanına eklenmiştir ve içindeki kodlar yukarıdaki gibidir.İncelersek eğer ActionResult tipinde “Index” adında bir metodumuz mevcut ve bu metod View katmanına dönüş yapmaktadır.

Prensip gereği Controller adında View katmanında klasör bulunmalıydı.Bu klasör içinde Controller’ımızda bulunan ActionResult tipindeki “Index” adındaki metod isminde dosya bulunmalıydı.Bu Controller’ı biz yeni oluşturduğumuz için View katmanında bu isimde bir klasör mevcut değil ve böyle bir klasör olmadığından dolayı “Index” adında bir dosyamızda mevcut değil.

View katmanındaki klasörü ve bu klasör içindeki dosyayı oluşturmanın iki yöntemi mevcuttur.Biri Visual Studio sayesinde, bir diğeri ise el ile..

Öncelikle manuel olarak elimizle View katmanında Controller ismindeki klasörümüzü oluşturup, sonra Controller’ımız içindeki ActionResult tipinden “Index” isimli metodumuzun isminden dosya oluşturalım.

Öncelikle Solution Explorer’a gelip, Views klasörüne sağ tıklayarak Add diyoruz ve New Folder seçeneğine tıklıyoruz.Eklenen klasöre Controller’ımızın ismi olan “BenimKontrolum” adını veriyoruz.

Sonra “BenimKontrolum” adındaki klasöre sağ tıklayarak, Add diyoruz ve View seçeneğini seçiyoruz.



Açılan penceredeki alanlardan bahsedecek olursak eğer,

  • View name alanına Controller’ımızla aynı isimde oluşturacağımız klasörün adını yazıyoruz.
  • “Creata a partial view (.ascx)” yazan kutucukta ise, bu oluşturulacak sayfa bir aspx sayfasımı yoksa ascx sayfasımı olsun diye soruyor.
  • “Create a strongly-typed view” yazan kutucukta ise, Model katmanıyla alakalı bir mevzu var.Eğer benim bu sayfada Model’larla ilgili bir işlem yapmam gerekiyorsa bu kutucuğu onaylar, daha sonra alttaki “View data class” yazan alandan ilgili model classını seçmem gerekiyor.
  • “Select master page” alanında ise, bu sayfamız hangi Masterpage sayfasını kullanacak onu belirtiyoruz.
  • “ContentPlaceHolder ID” alanında ise, bu sayfa seçili Masterpage deki hangi ContentPlaceHolder’ı kullanacak ID değerini yazıp belirtiyoruz.

Penceredeki alanların özelliklerinden bahsettikten sonra gelelim bizim nasıl bir sayfa oluşturduğumuza.
View name alanına,  “BenimKontrolumController” adındaki Controller’ımızın içinde bulunan ActionResult tipinden “Index” adındaki metodun View katmanındaki sayfasını oluşturacağımız için, “Index” yazıyoruz ve Add butonuna tıklıyoruz.

Oluşturulan Index.aspx adındaki sayfamızın kaynak kodları aşağıda gördüğünüz gibidir.

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
	Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Index</h2>
</asp:Content>

Şimdi “BenimKontrolumController.cs” adındaki Controller sınıfımızdan ilişkisi olduğu View katmanındaki “BenimKontrolum” adındaki klasörün içindeki Index dosyasına bir veri gönderelim.Tabi bu veriyi, Controller’ımızdaki “Index” adındaki ActionResult tipindeki metod ile göndereceğiz.

        public ActionResult Index()
        {
            ViewData["Mesaj"] = "Merhaba, bu benim Controller'ımdan gönderilen değerdir.";
            return View();
        }

Yukarıda gördüğünüz gibi “BenimKontrolumController” adındaki Controller’a gelip ActionResult tipinden olan “Index” adındaki metodumuza ViewData ile veri taşıttırıyoruz.Bu veriyi View katmanındaki Index.aspx sayfasında aşağıdaki gibi okuyabiliyoruz.

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
	Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Index</h2>
    <p>Gelen değer = <%:ViewData["Mesaj"] %></p>
</asp:Content>

Eğer bu şekilde projeyi çalıştırıp adres çubuğuna “http://localhost:3163/BenimKontrolum/Index” URL sini girersek, aşağıdaki gibi ekran gelecektir.

Eee el ile Controller’ımıza uygun View katmanında klasör ve dosya oluşturduk.Şimdi sıra Visual Studio programı ile bu işlemi gerçekleştirmek.

Öncelikle yeni bir Controller oluşturalım.Ben adına “Yeni(Controller)” ismini vermekteyim.Şuanda oluşturduğumuz bu Controller’ın View katmanında ne klasörünü oluşturduk, ne de Index adındaki Action’ı için klasördeki Index.aspx dosyasını.Bu dosyaları Visual Studio derleyicisine oluşturtturalım.

“Yeni(Controller)” adında oluşturulan Controller’ımızın kod sayfasına gelirsek eğer, varsayılan olarak “Index” adında ActionResult tipindeki metodumuz içinde gelmektedir.İşte bu metodumuza sağ tıklayarak Add View dersek eğer direkt olarak Index metodunun sayfasını oluşturma ekranı gelecektir ve otomatik olarak View name bölümüne “Index” ismini girecektir.Eğer Add dersek, View katmanında “Yeni” adında klasör oluşturulacak ve bu klasör altına Index.aspx dosyası eklenecektir.Aşağıdaki resmi inceleyiniz.

Eğer Index haricinde kendi isteğimize göre bir Action eklemek istiyorsak eğer, Controller’ımıza gelip o ActionResult tipindeki metodu yazmamız gerekmektedir.(Son oluşturduğumuz YeniController üzerinden örnek göstereceğim.)

    public class YeniController : Controller
    {
// Varsayılan Index adındaki metod
        public ActionResult Index()
        {
            return View();
        }
//Benim yazdığım Bey adını verdiğim metod
        public ActionResult Ben()
        { 
            return View();
        }
    }

Evet gördüğünüz gibi ActionResult tipinden metodumuzu Controller’ımız da oluşturduk.Ben bu metoda “Ben” adını verdim.Şimdi yapmamız gereken View katmanında bu metod isminde bir dosya oluşturmak.YeniController ismindeki Controller üzerinden çalıştığımız için View katmanına “Yeni” klasörü önceden eklenmişti.Biz “Ben” adındaki dosyayı “Yeni” adındaki klasöre ister manuel olarak ekleyebilir, istersekte Visual Studio aracılığıyla ekletebiliriz.Ben bu yazımı fazla uzatmaması için Visual Studio ile yüklemeyi tercih ediyorum.

Bu yazıda anlattığım gibi, metodumuza sağ tıklayıp Add View dersek eğer, metodumuzun View katmanındaki sayfasını oluşturmuş olacağız.

Bu yazımızın sonunada gelmiş bulunmaktayız.Bir sonraki yazımız da bu yazıdaki aynı projede Action metodları üzerinde parametre kullanımından bahsedeceğiz.

Şimdilik görüşmek üzere,
İyi Çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Büşra dedi ki:

    ben işlemi yaptığımda yükleme yapılamadı diye eror aldım nasıl çözebilirim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir