ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 9 – ActionLink, RouteLink, Action, RenderAction, Partial, RenderPartial

asp-net-MVC3

Merhaba MVC Severler,

Önceki yazımda Html Helper’larıyla CSS ve JavaScript nasıl kullanılır onu konuştuk. Sayfanın sonunda uygulmayı indirebilirsiniz. Bu yazımda aşağıdaki Html Helper’ları inceleyeceğiz;

  • Html.ActionLink
  • Html.RouteLink
  • Html.Partial
  • Html.RenderPartial
  • Html.Action
  • Html.RenderAction

Herhangi bir uygulama içerisinden diğer kaynaklara linkler verebilir, View’leri parçalara ayırarak bölümler halinde tekrar tekrar kullanabilir ya da diğer sayfaları kendi sayfalarımız içerisinde açabiliriz. Bu işlemler için Html Helper’larını kullacağız.

Html.ActionLink

ActionLink metotu hyperlink (<a> elementi) render eder. Örneğin Index View’inden, About View’ini görüntüleyecek link yazamak istersen bu metot tam işimize yaramaktadır. 10 tane overload’ı vardır.

Kullanımı:

@Html.ActionLink("Hakkımda","About")

Html Çıktısı:

<a href="/Home/About">Hakkımda</a>

Eğer çağıracağız action için parametre vermeniz gerekebilir böyle durumlarda aşağıdaki kullanım işimize yarayacaktır.

ActionResult tipinde About:

        public ActionResult About(string id, string sourceID)
        {
            ViewBag.Message = String.Format("gelen ID= {0}, sourceID={1}", id, sourceID);
            return View();
        }

Index View’imin içinde:

@Html.ActionLink("Hakkımda", "About", new RouteValueDictionary() {{"id","5"} ,{"sourceID","10"}})

Html.RouteLink

RouteLink’te, ActionLink helper’ına benzer tasarıma sahiptir. Fakat aynı zamanda parametre olarak Route Name alır ve Controller ve Action Name için herhangi bir parametre almaz.  Yukardaki örneğimizi tekrar yazalım.

Kullanımı:

@Html.RouteLink("Hakkımda",new RouteValueDictionary(){{"action","About"},{"id","5"},{"sourceID","10"}})

Html Çıktısı:

<a href="/Home/About/5?sourceID=10">Hakkımda</a>

Html.Partial

Partial metotu, herhangi bir Partial View’i veya Normal View’i bir string içerisine render eder. Birden çok farklı View içinden render etmek istediğiniz partial view gibi render edebilirsiniz. Index sayfası içerisinde Footer Action’i açıyoruz.

Kullanımı:

@Html.Partial("Footer")

Html Çıktısı:

Html.RenderPartial

RenderPartial, Render’e benzemektedir. Fakat RenderPartial’i doğrudan string döndürmek yerine yanıtı yazar. Kullanım olarak kod blokları arasında yazmanız gerekiyor. Aşağıdaki iki kullanımında çıktısı aynıdır:

@{Html.RenderPartial("Footer"); }
@Html.Partial("Footer")

Peki Partial’i mi yoksa RenderPartial’i mi kullanmam gerekiyor?

Genel olarak, Partial‘i RenderPartial‘a tercih etmenizi tavsiye ediyorum. Çünkü Partial, ek olarak kod blokları yazıpta içerisinde kullanmadığımız için daha kullanışlıdır. Fakat RenderPartial, doğrudan gelen yanıtı yazdığı için daha performanslıdır.

Html.Action ve Html.RenderAction

Action ve RenderAction, Partial ve RenderPartial’a benzemektedirler. Partial helperi, başka bir dosyadaki View içeriğini render etmeye yardım eder. Action ise, tekrar kullanılabilirlik açısından daha esnektir çünkü controller action farklı bir model tarafından build edilebilir ve controller içerisinde context’i kullanabilir yapabilir.

RenderAction ile Action arasındaki fark RenderAction gelen yanıtı doğrudan yazar.  Aşağıdaki gibi bir yapı kurduğumuzu düşünün:7

Home Controller:

        public ActionResult Menu()
        {
            return PartialView();
        }

CSS:

.list li
{
list-style-image:none;
display:inline;
margin-left:10px;
}

Home içerisindeki Menu isimli View’i Create as Partial View olarak oluşturuyoruz.

Kullanımı ve Html Çıktısı:

Ayrıca eğer actionName’in adını değiştirmek isterseniz şu şekilde bir kullanımda yapabilirsiniz:

        [ActionName("SahaneMenu")]
        public ActionResult Menu()
        {
            return PartialView();
        }

Bu sefer Html.Action(“SahaneMenu”) demeniz gerekiyor.

İndirme

Uygulamayı indirmek için tıklayın.

 

Umarım faydalı bir yazı olmuştur, örnekler yaptığımıda çok daha iyi anlaşılacaktır.

Bir sonraki yazımda Url Helper’ini anlatacağım.

MVC ile kalın…

, , , , , ,

  1. ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 10 – URL Helper’larının(Url.Content, Url.Action, Url.RouteUrl) Kullanımı « Mahmut Can Sözeri

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 114 other followers