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

Asp.NET MVC’de Action Metoda Parametre Yazmak

Bir önceki, Asp.NET MVC Controller,Action ve View Ekleme başlıklı yazımızın içeriğinde Controller oluşturmak, bu Controller’a bağlı View katmanında klasör ve bu klasör içindeki dosyalar adında da Controller’ımızda ActionResult tipinde metodlar oluşturmayı incelemiştik.Bu yazımızda ise Controller katmanımızdaki Action metodlarda parametre kullanmayı inceleyeceğiz.

Eğer MVC yazılarımı kronolojik olarak takip ediyorsanız eğer, bu konuyu önceki yazılarımda irdelediğimizi anımsarsınız.Burada yeniden değinme isteğimin sebebini sorarsanız eğer, yukarıda linkini verdiğim bir önceki yazının içeriğinde oluşturduğumuz “TestProje” adında bir Asp.NET MVC projesi mevcut.Ben bu yazımı aynı proje üzerinden örneklendirmeye karar verdim.

Söz konusu, bir önceki yazımızı okuduysanız eğer, orada Controller,Action ve View oluşturmayı tüm teferruatıyla görmüş bulunmaktayız.Eee kendi ellerimizle oluşturduğumuz bu yapılarda birde parametreli Action kullanmayı göstermeyi tercih ediyorum.Maksat pekiştirme olsun.

Önceki yazılarımdan birinde bu konuya değinmiştim.Bu yazıda anlatacağımız yöntem, yapı vs. gibi hiç bir fark olmadığını belirtmek isterim.

Konumuza dönersek eğer, “TestProje” adındaki projemizin son halini bir inceleyelim.

Gördüğünüz gibi Yeni(Controller) adında bir Controller’ımız mevcut.Önceki yazımızı okuduysanız eğer, bu Controller’ı bizim oluşturduğumuzu anlarsınız.(Tabi, haliyle bu Controller’ın isminde View katmanında klasör ve bu klasör içindeki dosyalar isminde Controller’ımızda ActionResult tipinden metodlarımızı oluşturmuştuk.)

Şimdi bu YeniController sınıfımızı açalım ve kodlarına bir göz atalım.

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

        public ActionResult Ben()
        {
            return View();
        }
    }

Gördüğümüz gibi, içinde “Index” ve “Ben” adında iki tane ActionResult tipinden metodumuz mevcut.(Ben adındaki metodu kendimiz oluşturmuştuk)

Bu yazımızın içeriği, elimizle oluşturduğumuz Controller’ın herhangi bir Action metodunu parametreli bir biçimde kullanmayı irdelemek olduğundan dolayı Global.asax dosyamızıda inceleyip, “Ben” adındaki ActionResult tipinden olan metodumuzu parametreli bir biçimde kullanmayı görelim.

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RegisterRoutes(RouteTable.Routes);
        }
    }

Global.asax dosyamızda gördüğünüz gibi, routes parametresinin MapRoute metodundaki URL yapısında Controller ve Action adından sonra “id” adında bir parametre almaktadır.Demek ki, “Ben” adındaki Action metodumuzda parametre adımız “id” olmalıdır.(Bu konuya Asp.NET MVC Çalışma Mekanizması – 2 adlı yazıda ayrıntılı bir şekilde değinmiştim.)

        public ActionResult Ben(string id)
        {
            ViewData["ParametredenGelenDeger"] = id;
            return View();
        }

“Ben” adındaki metoda, string tipinde “id” isminde bir parametre yazdık.Bu parametrenin değeri ViewData ile tutularak “Ben” adlı sayfamızda gösterilecektir.Burada ki, önemli hususlardan birisi, metodumuzun parametresinin tipi illaki string olmak zorunda değildir.

Eğer View katmanındaki “Yeni” isimli klasörün altındaki Ben.aspx sayfasının kodlarını aşağıdaki gibi değiştirip, projemizi çalıştırdıktan sonra adres çubuğuna “http://localhost:***/Yeni/Ben/GençayYıldız” şeklinde ifadeyi yazarsak, ekranda parametremizin değerinin yazıldığını göreceğiz.

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

Bu yazımızında sonuna gelmiş olduk.
Bir sonraki yazımda görüşmek üzere,
İyi çalışmalar

Bunlar da hoşunuza gidebilir...

Bir yanıt yazın

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