Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

Bartek Szafko

ASP .NET MVC Preview 3 już jest

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.

Tekst ukazał się także na blogu Bartek Szafko
Opublikowane 8 czerwca 2008 22:37 przez bszafko
Filed under:

Komentarze:

 

Luke said:

Warto wspomnieć, że instalacja Preview 3 nie wymusza stosowania nowego sposobu renderowania widoków. Nadal można korzystać z metod void i RenderView("..");

czerwca 9, 2008 12:50
 

bszafko said:

no proszę nawet tego nie doczytałem, byłem przekonany, że jest tylko jedna możliwość

masz może linka gdzie to jest??

czerwca 9, 2008 12:57
 

Luke said:

O, powiem Ci, że jednak teraz sobie sam ćwieka zabiłem... Mój projekt kompiluje się pod Preview 3 ze starym sposobem renderowania widoków, ale gdy tworze nowy projekt to gdy zmieniam na stare to nie działa i vice versa.. Gdzieś muszą być inne referencje, albo przestrzenie nazw dodane, zaraz to sprawdzę...

czerwca 9, 2008 19:06
 

Luke said:

No oczywiście mój projekt korzystał z własnej biblioteki (Copy Local) i dlatego mogłem korzystać ze starego sposobu. Instalacja Preview 3 usuwa Preview 2 i nie można korzystać jednocześnie z obu sposobów. Przepraszam, za wprowadzanie w błąd :)

czerwca 10, 2008 14:12
Komentarze anonimowe wyłączone
W oparciu o Community Server (Personal Edition), Telligent Systems