Blog Stats
  • Posts - 17
  • Articles - 0
  • Comments - 11
  • Trackbacks - 0

 

Tuesday, June 10, 2008

Asp.Net MVC Preview 3 Getirdikleri

Asp.Net MVC Framework Preview 3 geçtiğimiz günlerde duyuruldu. Asp.Net MVC Preview 2 ile uygulama geliştirmiş olanlar için, Preview 3 ile gelen değişiklikleri bu yazıda özetleyeme çalışacağım.

Asp.Net MVC Framework konusunda ön bilgi için geçtiğimiz günlerde yaptığımız Asp.Net MVC seminerinin dökümanlarına, örnek uygulamalara, seminer sunumu ve video kaydına bakabilirsiniz.

Seminer sunumu ve örnek uygulamalar Preview 2 baz alınarak yapılmıştı.

Şimdi gelelim Preview 3’e.

Önce Controller cephesinde olan değişikliklere bakalım. Action Method’ların yazımında ve yapısında değişiklikler oldu. Şöyleki, eskiden void döndüren Action Method’lar artık ActionResult döndürüyor. ActionResult daha bir kaç farklı tipten oluşuyor. Önce basit bir örnek üzerinde görelim.

Preview 2 Action Method Örneği:

    public class HomeController : Controller
    {
        public void Index()
        {
            RenderView("Index");
        }
    }

Preview 3 Action Method Örneği:

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

ActionResult da farklı tiplerde oluyor: ViewResult, EmptyResult, RedirectResult, RedirectToRouteResult, JsonResult, ContentResult

Bu ActionResult tiplerini döndürebilen Controller sınıfındaki methodlar da şu şekilde:

1. View : ViewResult döndürür (Yukarıdaki örnekte var)

2. Redirect : RedirectResult döndürür.

3. RedirectToAction : RedirectToRouteResult döndürür.

4. RedirectToRoute : RedirectToRouteResult döndürür.

5. Json : JsonResult döndürür.

6. Content : ContentResult döndürür.

Eğer bir Action Method void döndürürse ya da null döndürürse action invoker implicit olarak bir EmptyResult oluşturur.

Method, explicit, implicit gibi kavramlar için C#Türk.net’te Başlangıç Rehberi'nde  Göksu Özen tarafından yazılan Yöntemler 1, 23 yazılarına başvurabilirsiniz.

Şimdi de ActionFilter değişikliklerine göz atalım.

Action filter’lar için yeni bir IActionFilter interface eklenmiştir. ActionFilterAttribute attribute tipi de bu interface'i miras alır.

Action filter’lar artık 4 metoda sahipler: OnActionExecuting, OnActionExecuted, OnResultExecuting, OnResultExecuted. Metod adları zaten işlevleri hakkında ipucu veriyor.

Controller cephesindeki değişiklikler bu şekilde özetlenebilir. Şimdi gelelim View cephesine.

TextBox, Hidden, Password, DropDownList ve ListBox HTML yardımcı metodları güncellenmiştir.

ViewDataDictionary’ye bir Model property’si eklenmiştir.

Routing değişikliklerinden de biraz bahsedelim.

MVC route’larının oluşturulması artık daha kolay. MapRoute extension  metodu hemen göze çarpıyor. Buna da yine örnek verelim.

Preview 2 yapısı:

routes.Add("route-name", new Route("{locale}/{year}", new MvcRouteHandler()) {
  Defaults = new RouteValueDictionary(new {locale="en-US", year=DateTime.Now.Year.ToString()})
}

Preview 3 yapısı:

routes.MapRoute("route-name", "{locale}/{year}", new {locale="en-US", year=DateTime.Now.Year.ToString()});

Yeni bir IRouteConstraint interface eklendi.

Yeni bir HttpMethodConstraint tipi eklendi. httpMethod adlı kısıtlama ismi artık şart değil, artık HTTP terimleri üzerinden kısıtlama oluşturulabilmektedir.

Aşağıda örnek bir yazı var:

routes.MapRoute("route-name"
  , "{controller}/update"
  ,  new {action = "update"}
  , new {httpMethod = new HttpMethodConstraint("PUT", "POST")});

 

Bu arada System.Web.Abstractions ve System.Web.Routing kütüphanelerinin sürümleri değişti. Preview 3 sürümleri .NET Framework version 3.5 Service Pack 1 Beta ile gelenlere göre daha yeni.

Şimdilik değişiklikleri özetlemeye çalıştım. Yeni makale ve demo uygulamalar yolda.

 

 

Copyright © Yunus Özen