Angular10中如何使用DevExpress报表设计器和报表查看器

How to use DevExpress report designer and report viewer in Angular 10

我在前端使用 Angular 10,在后端使用带有存储库模式的 .net 核心 webAPI。我正在尝试使用 DevExpress(v20.1) 报告。但我无法弄清楚如何做到这一点。我正在搜索它一个星期但没有结果。 This page and this 页面对此进行了解释。但我不知道如何配置这部分代码;

public class ReportDesignerController : Controller {
//...
 public ActionResult GetReportDesignerModel(string reportUrl) {
     string modelJsonScript =
         new ReportDesignerClientSideModelGenerator(HttpContext.RequestServices)
         .GetJsonModelScript(
             reportUrl,                 
             GetAvailableDataSources(), //this metod implemented 
             "DXXRD",   
             "DXXRDV",
             "DXXQB"      
         );
     return Content(modelJsonScript, "application/json");
 }

}

谁能告诉我如何正确配置“DXXRD”、“DXXRDV”、“DXXRDV”。我没有使用 mvc,所以当我用这个替换代码时;

new ReportDesignerClientSideModelGenerator()
         .GetJsonModelScript(
             reportUrl,                 
             GetAvailableDataSources(), 
             "ReportDesigner/Invoke",    
             "WebDocumentViewer/Invoke", 
             "QueryBuilder/Invoke"       .
         );

我必须使用 MVC 才能调用这些控制器和视图。但我没有使用 mvc。在我现在所处的位置,我开始认为如果没有 MVC,我将无法实现这一目标。所以;

DevExpress 报告组件使用 ASP.NET MVC 核心控制器处理来自 Report Designer, Document Viewer, and Query Builder 使用预定义路由的请求:

因此必须在您的应用中注册 MVC 中间件和 ASP.NET 核心 MVC 报告控制器。您可以通过在应用程序启动时添加以下代码来继续:

    using DevExpress.AspNetCore;
    using DevExpress.AspNetCore.Reporting;
    //...
    
    public class Startup {
    //...
       public void ConfigureServices(IServiceCollection services) {
         // Register reporting services in an application's dependency injection container.
          services.AddDevExpressControls();
          // Use the AddMvcCore (or AddMvc) method to add MVC services.
           services.AddMvcCore(); 
     }
    
     public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
           // ...
           app.UseStaticFiles();
           // Initialize reporting services.
           app.UseDevExpressControls();
            // ...
      }
    }

您可以在文档中找到更多信息: