WebReport.Backend.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using Microsoft.AspNetCore.Html;
  6. using System.Threading.Tasks;
  7. using System.Linq;
  8. using FastReport.Web.Cache;
  9. using FastReport.Web.Services;
  10. namespace FastReport.Web
  11. {
  12. public partial class WebReport
  13. {
  14. internal static IResourceLoader ResourceLoader { get; set; }
  15. public HtmlString RenderSync()
  16. {
  17. return Task.Run(() => Render()).Result;
  18. }
  19. public async Task<HtmlString> Render()
  20. {
  21. if (Report == null)
  22. throw new Exception("Report is null");
  23. return Render(false);
  24. }
  25. internal HtmlString Render(bool renderBody)
  26. {
  27. switch (Mode)
  28. {
  29. #if DIALOGS
  30. case WebReportMode.Dialog:
  31. #endif
  32. case WebReportMode.Preview:
  33. return new HtmlString(template_render(renderBody));
  34. #if DESIGNER
  35. case WebReportMode.Designer:
  36. return RenderDesigner();
  37. #endif
  38. default:
  39. throw new Exception($"Unknown mode: {Mode}");
  40. }
  41. }
  42. /// <summary>
  43. /// Force report to be removed from internal cache
  44. /// </summary>
  45. public void RemoveFromCache()
  46. {
  47. WebReportCache.Instance?.Remove(this);
  48. }
  49. }
  50. }