Ответ 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