Created
January 31, 2014 00:48
-
-
Save anthonyvscode/8723344 to your computer and use it in GitHub Desktop.
Doddle Reports - Export type by parameter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ReportResult : DoddleReport.Web.ReportResult | |
{ | |
private readonly Report report; | |
public ReportResult(Report report) | |
: base(report) | |
{ | |
this.report = report; | |
} | |
protected override string GetDownloadFileExtension(HttpRequestBase request, string defaultExtension) | |
{ | |
var extension = request.Params["extension"]; | |
if (string.IsNullOrEmpty(extension)) | |
return defaultExtension; | |
return "." + extension; | |
} | |
public override void ExecuteResult(ControllerContext context) | |
{ | |
string defaultExtension = Config.Report.Writers.GetWriterConfigurationByFormat(Config.Report.DefaultWriter).FileExtension; | |
var response = context.HttpContext.Response; | |
var writerConfig = GetWriterFromExtension(context, defaultExtension); | |
response.ContentType = writerConfig.ContentType; | |
var writer = writerConfig.LoadWriter(); | |
if (!string.IsNullOrEmpty(FileName)) | |
{ | |
var extension = GetDownloadFileExtension(context.HttpContext.Request, defaultExtension); | |
context.HttpContext.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}{1}", FileName, extension)); | |
} | |
writer.WriteReport(report, response.OutputStream); | |
} | |
private WriterElement GetWriterFromExtension(ControllerContext context, string defaultExtension) | |
{ | |
string extension = GetDownloadFileExtension(context.RequestContext.HttpContext.Request, defaultExtension); | |
var writerConfig = Config.Report.Writers.GetWriterConfigurationForFileExtension(extension); | |
if (writerConfig == null) | |
throw new InvalidOperationException( | |
string.Format( | |
"Unable to locate a report writer for the extension '{0}'. Did you add this fileExtension to the web.config for DoddleReport?", | |
extension)); | |
return writerConfig; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
http://localhost:80/Area/Controller/Action/{1}?extension={extension} | |
just pass in xlsx, pdf etc, and it will call the underlying writer instead of using the built in doddle routing which was {action}.{extension} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment