ASP .NET MVC Preview 3

Od 27 maja dostępny jest Preview 3 ASP .NET MVC. O najważniejszej zmianie, czyli o nowym sposobie obsługi renderowania widoków wspominałem już wcześniej. Dzisiaj trochę więcej szczegółów i przykładów.

Wszystkie akcje muszą teraz zwracać ActionResult:

public ActionResult Index()

{

    ViewData[“Title”] = “Home Page”;

    ViewData[“Message”] = “Welcome to ASP.NET MVC!”;

    return View();

}

ActionResult jest klasą abstrakcyjną, z której dziedziczy:

  • ViewResult – zwracany obiekt przekazuje informacje o tym, że ma być wygenerowany widok, odpowiednik RenderView. Co ciekawe nie trzeba przekazywać nazwy widokum,która domyślnie jest taka sama jak nazwa akcji. Obiekt ActionResult najlepiej tworzyć używając metody View, która opcjonalnie pozwala podać nazwę widoku, masterpage oraz dane. Metoda View używa także słownika ViewData, który znajduje się w kontrolerze do pobrania danych dla widoku.
  • JsonResult – zwraca zserializowany do javascript obiekt. Bardzo interesująca sprawa pozwala na zwracanie wyników w formacie strawialnym od ręki dla JS.
  • RedirectToRouteResult – pozwala na przekierowanie do innej akcji lub nazwanej sciezki z tabeli routingu. W RedirectToAction nazwa akcji i controllera jest stringiem, takie rozwiązanie ma wady – podczas komiplacji nie dostaje się informacji o nieprawidłowych wywołaniach. Wydaje mi się, że korzystniejsze byłoby użycie LINQ coś w stylu:

    return RedirectToAction<HomeController>(c => c.Index());

Dzięki takim zmianom testowanie akcji jest możliwe bez mockowania całego contextu http:

[TestMethod]

public void Index()

{

    // Setup

    HomeController controller = new HomeController();

 

    // Execute

    ViewResult result = controller.Index() as ViewResult;

 

    // Verify

    ViewDataDictionary viewData = result.ViewData as ViewDataDictionary;

    Assert.AreEqual(“Home Page”, viewData[“Title”]);

    Assert.AreEqual(“Welcome to ASP.NET MVC!”, viewData[“Message”]);

}

Inne:

  • zmiany w helperach HTML
  • zmiany w routingu – możliwość tworzenia bardziej skomplikowanych i sparametryzowanych ścieżek

Jak zwykle przy okazji MVC polecam wpis na blogu Scotta jest tam dużo informacji także o pozostałych zmianach.

Preview 3 można ściągnąć w Ľródłach i binariach.