The requested page is not available for the requested platform. You are viewing the content for Default platform.

Create an ASP.NET Core 2.0+ Dashboard Application

  • 5 min to read

This tutorial describes how to integrate the Web Dashboard control into an ASP.NET Core 2.0+ web application.

Note

Download the completed projects: Create an ASP.NET Core 2.0+ Application

See demo: C:\Documents and Settings\Public\Documents\DevExpress Demos 19.2\Components\Dashboard\CS\AspNetCoreDashboard

Prerequisites

  • .Net Core 2.0 framework or later
  • Visual Studio 2017 v15.3 or later

Steps 1-9. Configure an ASP.NET Core Web Application

  1. In Visual Studio, create a new project and select ASP.NET Core Web Application on the start page as a project template.
  2. Specify the ASP.NET Core 2.0 platform, select Web Application (Model-View-Controller), and click OK.
  3. Open the NuGet Package Manager and set the package source to All. Install the following packages:
  4. Right-click the project in the Solution Explorer and select Add | New Folder from the context menu. Rename the created folder to App_Data and create the Dashboards folder inside it.
  5. Open the Add New Item dialog (Ctrl+Shift+A), add the npm Configuration File (package.json) to the project, and add the following npm packages:

    {
        "version": "1.0.0",
        "name": "asp.net",
        "private": true,
        "license": "MIT",
        "devDependencies": {
            "devextreme": "19.2-next",
            "@devexpress/analytics-core": "19.2-next",
            "devexpress-dashboard": "19.2-next",
            "jquery-ui-dist": "^1.12.1"
        }
    }
    
  6. Right-click package.json and select Restore Packages.

  7. Create the bundleconfig.json file in the root directory and add the following configuration:

    [
        {
            "outputFileName": "wwwroot/css/site.min.css",
            "inputFiles": [
                "node_modules/devextreme/dist/css/dx.common.css",
                "node_modules/devextreme/dist/css/dx.light.css",
                "node_modules/@devexpress/analytics-core/dist/css/dx-analytics.common.css",
                "node_modules/@devexpress/analytics-core/dist/css/dx-analytics.light.css",
                "node_modules/@devexpress/analytics-core/dist/css/dx-querybuilder.css",
                "node_modules/devexpress-dashboard/dist/css/dx-dashboard.light.min.css"
            ],
            "minify": { "enabled": false, "adjustRelativePaths": false }
        },
        {
            "outputFileName": "wwwroot/js/site.min.js",
            "inputFiles": [
                "node_modules/jquery/dist/jquery.js",
                "node_modules/jquery-ui-dist/jquery-ui.js",
                "node_modules/knockout/build/output/knockout-latest.js",
                "node_modules/ace-builds/src-min-noconflict/ace.js",
                "node_modules/ace-builds/src-min-noconflict/ext-language_tools.js",
                "node_modules/ace-builds/src-min-noconflict/theme-dreamweaver.js",
                "node_modules/ace-builds/src-min-noconflict/theme-ambiance.js",
                "node_modules/devextreme/dist/js/dx.all.js",
                "node_modules/@devexpress/analytics-core/dist/js/dx-analytics-core.min.js",
                "node_modules/@devexpress/analytics-core/dist/js/dx-querybuilder.min.js",
                "node_modules/devexpress-dashboard/dist/js/dx-dashboard.min.js"
            ],
            "minify": {
                "enabled": false
            },
            "sourceMap": false
        }
    ]
    
  8. Open the path below and copy the nwind.xml database to the project's App_Data folder.

    C:\Users\Public\Documents\DevExpress Demos 19.2\Components\Data\nwind.xml

  9. Open the appsettings.json file, create the ConnectionStrings object, and add the nwind connection string to register the data connection:

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "ConnectionStrings": {
        "nwind": "XpoProvider=InMemoryDataStore;Read Only=true;Data Source=App_Data\\nwind.xml;"
      }
    }
    

Steps 10-11. Add and Configure the Web Dashboard

  1. Open the Index.cshtml file and replace its content with the code below:

    @{ 
        Layout = null;
    }
    <!-- Add the following namespace usages: -->
    @using DevExpress.AspNetCore
    @using DevExpress.DashboardWeb
    @using DevExpress.DashboardAspNetCore
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <!-- Add bundled resources. -->
        <link href="~/css/site.min.css" rel="stylesheet" />
        <script src="~/js/site.min.js"></script>
    </head>
    <body>
        <!-- Add the Web Dashboard with the "clientDashboardControl1" name to a View, specify its size, and set the Working Mode to Designer. -->
        <div style="position: absolute; left:0;top:0;right:0;bottom:0;">
            @(Html.DevExpress().Dashboard("clientDashboardControl1")
            .WorkingMode(WorkingMode.Designer)
            .Width("100%")
            .Height("100%")
            )
        </div>
    </body>
    </html>
    
  2. Open the Startup.cs file and replace its content:

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using DevExpress.DashboardAspNetCore;
    using DevExpress.DashboardWeb;
    using DevExpress.AspNetCore;
    using Microsoft.Extensions.FileProviders;
    
    namespace AspNetCoreDashboardWebApplication {
        public class Startup { 
            public Startup(IConfiguration configuration, IHostingEnvironment hostingEnvironment) {
            Configuration = configuration;
            FileProvider = hostingEnvironment.ContentRootFileProvider;
            }
    
            public IConfiguration Configuration { get; }
            public IFileProvider FileProvider { get; }
    
            public void ConfigureServices(IServiceCollection services) {
                // Add a DashboardController class descendant with a specified dashboard storage
                // and a connection string provider.
                services
                    .AddMvc()
                    .AddDefaultDashboardController(configurator => {
                        configurator.SetDashboardStorage(new DashboardFileStorage(FileProvider.GetFileInfo("App_Data/Dashboards").PhysicalPath));
                        configurator.SetConnectionStringsProvider(new DashboardConnectionStringsProvider(Configuration));
                    });
                // 
                services.AddDevExpressControls();
            }
    
            public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
                if (env.IsDevelopment()) {
                    app.UseDeveloperExceptionPage();
                } else {
                    app.UseExceptionHandler("/Home/Error");
                }
    
                app.UseStaticFiles();
                // Register the DevExpress middleware.
                app.UseDevExpressControls();
                app.UseMvc(routes => {
                    // Map dashboard routes.
                    routes.MapDashboardRoute("api/dashboard");
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
        }
    }
    

Steps 12-13. Create a Dashboard

  1. The designer application is now ready. Build and run the project.

    Your application should look as follows:

    WebDesigner-NoDashboard

  2. Create your first dashboard in the Web Dashboard.

Steps 14-15. Switch to the Viewer Mode

Once you create and save a dashboard, you can switch your Dashboard Designer application to the Viewer mode.

  1. In a project, open the Views | Home | Index.cshtml file. Update the BuilderFactory.Dashboard helper method's code as follows:

    @(Html.DevExpress().Dashboard("clientDashboardDesigner1")
        .WorkingMode(WorkingMode.ViewerOnly)
        .Width("100%")
        .Height("100%")
    )
    
  2. Run the application. The ASP.NET Core Dashboard control displays the dashboard from ~/App_Data/Dashboards.

    AspNetCoreViewer_Result

Restrictions and Limitations

  • OLAP mode supports only XML for Analysis (XMLA) with MSMDPUMP.
  • The content of a dashboard or specific dashboard items is saved in Windows Metafile format when they exported to PDF or image formats. .NET Core does not support Windows Metafile format. Refer to the Manage Exporting Capabilities topic for more information on how to circumvent this limitation.
  • Export to image is disabled for .NET Core because of a problem in the Libgdiplus library that is used to export data in ASP.NET Core Dashboard. See T685212 and T685811 for more information.

Next Steps

See Also