ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

 Sayfamızın linkinde ilk parametremiz controller’ın ismi. (Yazi). İkinci parametremiz Action’ımızın ismi (Index). Üçüncü parametremiz action’a gönderdiğimiz “id” isminde Routing Value.

 Şimdi YaziController’daki Action methodlarımızı ve her Action’ın View’larını oluşturalım.

YaziController.cs

Asp.Net MVC Sayfalar Arası Parametre Gönderme - Route Value - Query String

Veysel Uğur KIZMAZ
MVC
13.08.2011 17:34:35
Hit : 4136

Bu makalemizde Asp.Net MVC ile sayfalar arası parametre gönderme işlemlerini inceleyeceğiz. Bu işlem için birkaç yöntem var. Sırasıyla neler olduklarını inceleyelim.

1. Routing Value

Global.asax dosyasından yapılan ayarlamalarla sayfalar arası gönderilecek parametrelerin belirlendiği yapıdır. Varsayılan olarak burada ayarlama yapılır, parametre (isteğe bağlı olarak) gönderilirse değeri sayfanın Action methodundan alınır. Bir örnekle inceleyelim.

Örneğimizde YaziController isminde bir Controller olsun. Bu Controller içinde Index() ve Yazi() isminde 2 Action olsun. Bu sınıfın kodlarını birazdan inceleyeceğiz. Ama öncelikle Global.asax dosyamızdaki bahsettiğimiz yapıyı inceleyelim. 

        public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapRoute(

                "Default", // Route name

                "{controller}/{action}/{id}", // URL with parameters

                new { controller = "Yazi", action = "Index", id = UrlParameter.Optional } // Parameter defaults

            );

        }

 RegisterRoutes methodunda Action yönlendirmelerinin nasıl yapılacağı bilgisi tutulur.  Bu örnekteki yapıyı inceleyelim:

"{controller}/{action}/{id}"

    public class YaziController : Controller

    {

        public ActionResult Index()

        {       

            return View();

        }

 

        public ActionResult Yazi()

        {

            var routeValue = RouteData.Values["id"];

            ViewBag.GelenId = routeValue;

            return View();

        }

    }

 

Burada RouteData.Values ile Global.asax’da tanımladığımız “id” parametresinin değerini (gönderdiğimiz taktirde) alıp routeValue değişkenine aktarmaktayız.

Şimdi Index.cshtml dosyamıza gidelim ve buradan Yazi.cshtml’e yönlendirme linkini aşağıdaki gibi ekleyelim.

 Index.cshtml

@{

    ViewBag.Title = "Index";

}

@Html.ActionLink("Yazı", "Yazi", new {id = 1 }) |

 Buradaki kod, bulunduğumuz controller’da Yazi isimli Action’a yönlenmeyi sağlayan bir link oluşturuyor ve bu linkte Id değişkeninin Global.asax’da tanımlandığı yere 1 değerini atıyor. Projemizi çalıştırıp nasıl olduğuna göz atalım.

 

Yazı linkinin üzerine geldiğimizde aşağıda hangi sayfaya yönleneceğini görüyoruz. Global.asax’daki tanımlamamıza benzer bir şekilde Controller/Aciton/Id parametreleri dahilinde değerlerimizi yerleştirdik. 1 değerini ekranda göstermek için Yazar.cshtml kodumuzu aşağıdaki gibi düzenliyoruz.

 Yazar.cshtml

@{

    ViewBag.Title = "Yazi";

}

<p>

    Gelen Id : @ViewBag.GelenId

</p>

 Şimdi projemizi çalıştıralım ve Yazı linkine tıklayalım.

 

2. QueryString

İkinci yöntem ise parametre olarak Global.asax dosyamızda tanımlamadığımız bir parametreyi QueryString şeklinde göndermektir. Bu işlemi bir örnek üzerinde inceleyelim.


YaziContoroller’ımıza yeni bir Makale isminde yeni bir Action (ve View’ını) ekleyelim ve kodunu aşağıdaki gibi düzenleyelim.

YaziController.cs

        Public ActionResult Makale()

        {

            var makaleId = Request.QueryString["makaleid"];

            ViewBag.MakaleId = makaleId;

            return View();

        }

 

Index sayfamızdan buraya QueryString parametresi olarak “makaleid”yi gönderiyoruz ve buradan Makale View’ına MakaleId’yi parametre olarak gönderiyoruz.

Şimdi Index.cshtml dosyamızdan Makale sayfamıza yönlendirme linkini yerleştirmek için burayı aşağıdaki gibi düzenleyelim.

Index.cshtml

@{

    ViewBag.Title = "Index";

}

 

@Html.ActionLink("Yazı", "Yazi", new {id = 1 }) |

@Html.ActionLink("Makale","Makale",new {makaleid = 1})

 

Son olarak Makale.cshtml View’ına gidelim ve burada MakaleId değerini ekranda gösterelim.

 

Makale.cshtml

@{

    ViewBag.Title = "Makale";

}

 

<p>

    Makale Id : @ViewBag.MakaleId

</p>

 

Projemizi çalıştıralım ve Index sayfasına göz atalım. 

Makale linkinin üzerine geldiğimizde link olarak Controller/Action?querystring=value şeklinde QueryString’in verildiğini görüyoruz. Şimdi Makale linkine tıklayalım ve değerimizin sayfaya gelip gelmeyeceğine bakalım.

 

Göründüğü üzere, MakaleId değerimizi sayfamızda kullanabildik.

 

 

Veysel Uğur KIZMAZ

Bilgisayar Mühendisi

veysel@ugurkizmaz.com

www.ugurkizmaz.com

 




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR