O ASP.NET MVC é uma framework de desenvolvimento web extremamente poderosa, nela é possível customizar, estender e criar nossas próprias implementações, tendo assim um controle total de nossas aplicações.
Sem dúvida o ActionResult faz parte do core do ASP.NET MVC, desde a sua primeira versão o ASP.NET MVC vem evoluindo e criando vários tipos que derivam dele, entender o funcionamento dessa parte do ASP.NET MVC ajuda a escolhermos a melhor solução para cada parte de nossa aplicação.
Um action result é o tipo de retorno de um método de um controller, ou melhor, o tipo de retorno de uma action. Actions podem retornar diversas coisas, como: models para views, file stream, redirects, javascript, etc.
Existem diversos tipos que são derivados do ActionResult:
No ASP.NET MVC 3.0 existem os seguintes tipos nativos:
- ContentResult
- EmptyResult
- FileResult
- HttpStatisCodeResult
- JavaScriptResult
- JsonResult
- RedirectResult
- RedirectToRouteResult
- ViewResultBase
- FileContentResult
- FilePathResult
- FileStreamResult
- HttpNotFoundResult
- HttpUnauthorizedResult
- PartialViewResult
- ViewResult
public class DownloadResult : ActionResult
{
public string FileName { get; set; }
public string Path { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Buffer = true;
context.HttpContext.Response.Clear();
context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
context.HttpContext.Response.ContentType = "text/html";
context.HttpContext.Response.WriteFile(context.HttpContext.Server.MapPath(Path));
}
}
public DownloadResult GetHtml(long id)
{
var html = new Html();
html.Load(id);
return new DownloadResult() { FileName = html.FileName, Path = html.Path) };
}


