Click here for the English article.
Gilt für
- ASP.NET Core MVC mit Razor ab .NET 8
- Web Report Viewer
- Die Paketbeispiele beziehen sich auf List & Label 31
Einleitung
Der klassische HTML5Viewer ist veraltet (deprecated) und wurde durch den moderneren Web Report Viewer (WRV) ersetzt. Für die Migration müssen die WRV-Dienste registriert, ein Controller zur Bereitstellung von List & Label und des Repositorys angelegt sowie der Viewer in einer Razor View eingebunden werden.
Voraussetzungen
- Eine ASP.NET-Core-MVC-Anwendung mit Razor ab .NET 8
- Ein Repository mit dem anzuzeigenden List & Label-Projekt
- Eine vollständig initialisierte
ListLabel-Instanz mit Lizenzierung, Datenquelle und benötigten Optionen
Für List & Label 31 werden die NuGet-Pakete combit.ListLabel31 und combit.ListLabel31.Web benötigt.
Migration durchführen
1. Web Report Viewer registrieren
Ergänzen Sie in Program.cs die benötigten Dienste:
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddControllersWithViews()
.AddNewtonsoftJson();
builder.Services.AddWebReportViewer();
Registrieren Sie anschließend die Middleware vor der Controller-Route:
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseWebReportViewer();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Damit werden die benötigten Dienste und Endpunkte des Web Report Viewers in der ASP.NET-Core-Anwendung bereitgestellt.
2. Web-Report-Viewer-Controller erstellen
Erstellen Sie einen Controller, der von WebReportViewerController ableitet:
using System.IO;
using combit.Reporting;
using combit.Reporting.Web.WebReportViewer;
using Microsoft.AspNetCore.Hosting;
namespace YourMvcApp.Controllers
{
public class MyWebReportViewerController : WebReportViewerController
{
private readonly IWebHostEnvironment _environment;
public MyWebReportViewerController(IWebHostEnvironment environment)
{
_environment = environment;
}
public override void OnProvideListLabel(
ProvideListLabelContext context)
{
ListLabel ll = DefaultSettings.GetListLabelInstance(
context.ProjectName,
DefaultSettings.GetBaseRepository());
string exportPath = Path.Combine(
_environment.ContentRootPath,
"App_Data",
"TempFiles");
Directory.CreateDirectory(exportPath);
context.ExportPath = exportPath;
context.NewInstance = ll;
}
public override void OnProvideRepository(
ProvideRepositoryContext context)
{
context.FileRepository = DefaultSettings.GetBaseRepository();
}
}
}
Der Controller stellt dem Viewer pro Sitzung eine vollständig konfigurierte ListLabel-Instanz und das verwendete Repository bereit. Die Methoden DefaultSettings.GetListLabelInstance(...) und DefaultSettings.GetBaseRepository() stehen für die anwendungsspezifische Initialisierung.
3. Viewer in einer Razor View anzeigen
Binden Sie den Web Report Viewer in der gewünschten Razor View ein:
@using combit.Reporting.Web
@using combit.Reporting.Web.WebReportViewer
@{
string repositoryId = "<MY_REPOSITORY_ID>";
var options = new WebReportViewerMVCOptions(repositoryId)
{
Title = "Web Report Viewer"
};
}
@Html.WebReportViewer(options)
Ersetzen Sie <MY_REPOSITORY_ID> durch die ID des Projekts im Repository oder übergeben Sie diese dynamisch aus Ihrer Anwendung.
4. Alte HTML5Viewer-Integration entfernen
Entfernen Sie die bisherige Integration erst, nachdem der Web Report Viewer erfolgreich eingebunden wurde und auch funktioniert. Prüfen und entfernen Sie anschließend:
- HTML5Viewer-Aufrufe in Views oder Partial Views
- nicht mehr benötigte Controller und Routen
- HTML5Viewer-spezifische JavaScript- und CSS-Dateien
- nicht mehr verwendete Assemblies oder NuGet-Abhängigkeiten
Validierung
Die Migration ist erfolgreich, wenn:
- der Web Report Viewer ohne Fehler geladen wird
- das gewünschte Repository-Projekt angezeigt wird
- Navigation, Parameter und benötigte Exportfunktionen funktionieren
- in der Browserkonsole keine HTML5Viewer-Ressourcen oder zugehörigen Fehler mehr erscheinen