Каковы все результаты действия ASP.NET MVC?

Есть ли список всех результатов действия ASP.Net MVC и их использования?

Я занимался активным использованием ActionResult почти для всех, но я знаю, что это неправильно, и что я должен использовать более конкретные результаты действий.

Я искал это, но не могу найти список. Мы только что купили книгу Wrox, но это больше, чем за неделю до доставки, и я хотел бы до этого дочитаться до этого.

Можете ли вы также перевернуть свои собственные и где-то где-то документировать?

Ответы

Ответ 1

Если вы откроете System.Web.Mvc с помощью Reflector, вы увидите, что существует несколько производных типов, которые наследуются от абстрактного класса ActionResult. Это:

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

Да, вы можете свернуть свой собственный, наследуя от абстрактного класса ActionResult. Вы можете изучить один или несколько из ActionResults в списке выше с Reflector, чтобы понять, как это будет сделано.

Исходный код также доступен здесь:

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

Ответ 2

Если вы посмотрите на ASP.NET MVC 5, добавьте HttpStatusCodeResult в список.

Также стоит упомянуть, что вспомогательные методы, возвращающие соответствующий результат действия, не имеют слова "Результат" в конце. Например, чтобы вернуть HttpNotFoundResult, вы напишете return HttpNotFound ( "описание состояния" );.

Страница класса ActionResult на MSDN содержит полный список классов результатов и вспомогательных методов.