I am testing Doddle Report to generate a few report form a IEnumerable object. I need to generate a Link like this
PDF - http://myserver.com/reports/ProductsRepo
Check out this tutorial to return different action result.
The ASP.NET MVC framework supports several types of action results including:
I'd done something similar what you want on MVC 5 and I used FilePathResult as J.W said.
cshtml:
@Html.ActionLink("Download Here", "DownloadExampleFiles", "Product", new { fileName = "variation-example" }, new { @target = "_blank" })
ProductController:
public FilePathResult DownloadExampleFiles(string fileName)
{
return new FilePathResult(string.Format(@"~\Files\{0}", fileName + ".txt"), "text/plain");
}
Download a file seems to be very silly/easy, however, for those who are new on MVC, it's not. This approach sounds to be the best while using MVC.
PS: I've forced a .txt just as an example. You should do what is intersting for you to get the specific file.
AFAIK, there is nothing special about doing this in MVC. Create a LinkButton on your form with a handler that generates the PDF file, then redirect to the created file.
Something like this maybe:
<h2>List Of Reports</h2>
<ul>
<% foreach (var report in Model){ %>
<li><a href="<%= Html.BuildUrlFromExpression<ReportController>(r => r.Reports(report.Filename)) %>"><%=report.Filename %></a></li>
<% } %>
</ul>
There maybe a shorter way but this works.