2009-09-29 3 views
14

Czy istnieje lista wszystkich wyników akcji ASP.Net MVC i ich zastosowań?Jakie są wszystkie wyniki akcji ASP.Net MVC?

Używam ActionResult prawie wszędzie, ale wiem, że to nie jest poprawne i że powinienem używać bardziej konkretnych wyników akcji.

Mam google, ale nie mogę znaleźć listy. Właśnie kupiliśmy książkę Wrox, ale to więcej niż tydzień przed datą dostawy i chciałbym ją przeczytać wcześniej.

Czy możesz też przetoczyć swoje własne i czy jest to gdzieś udokumentowane?

Odpowiedz

22

Jeśli otworzysz System.Web.Mvc używając , zobaczysz, że istnieje kilka typów pochodnych, które dziedziczą po klasie abstrakcyjnej ActionResult. Są to:

System.Web.Mvc.ContentResult 
System.Web.Mvc.EmptyResult 
System.Web.Mvc.FileResult 
    System.Web.Mvc.FileContentResult 
    System.Web.Mvc.FilePathResult 
    System.Web.Mvc.FileStreamResult 
System.Web.Mvc.HttpUnauthorizedResult 
System.Web.Mvc.JavaScriptResult 
System.Web.Mvc.JsonResult 
System.Web.Mvc.RedirectResult 
System.Web.Mvc.RedirectToRouteResult 
System.Web.Mvc.ViewResultBase 
    System.Web.Mvc.PartialViewResult 
    System.Web.Mvc.ViewResult 

Tak, możesz rzucić własną przez dziedziczenie z klasy abstrakcji ActionResult. Możesz zbadać jeden lub więcej ActionResultów z powyższej listy za pomocą Reflectora, aby poczuć, jak to się stanie.

Kod źródłowy dostępny jest również tutaj:

http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471

+0

Doskonały. Dzięki, Robert. – griegs

+6

W przypadku ASP.NET MVC, źródło jest dostępne. Może być bardziej * wygodnie * używać odbłyśnika, ale w źródle jest dodatkowa wartość (komentarze itp.). –

+4

Dzięki Marc. Przyjrzę się również temu. W międzyczasie udało mi się stworzyć własny ActionResult, który zwrócił słowo "Slappy". To było zabawne. :) Dziękuje za wszystko. – griegs

0

Jeśli to patrząc na ASP.NET MVC 5, dodać HttpStatusCodeResult do listy.

Należy również wspomnieć, że metody pomocnicze, które zwracają odpowiedni wynik akcji, nie mają na końcu słowa "Wynik". Na przykład, aby zwrócić wartość HttpNotFoundResult, napiszemy return HttpNotFound ("opis stanu");.

ActionResult Class page on MSDN ma pełną listę klas wyników i metod pomocy.