Heim > Backend-Entwicklung > C++ > Wie rendere ich Ansichten als Zeichenfolgen in .NET Core?

Wie rendere ich Ansichten als Zeichenfolgen in .NET Core?

Barbara Streisand
Freigeben: 2025-01-04 19:05:40
Original
333 Leute haben es durchsucht

How to Render Views as Strings in .NET Core?

Ansicht als String in .NET Core zurückgeben

Problem:

Viele verfügbare Artikel bieten Anleitung zum Rendern von Ansichten in Zeichenfolgen in ASP.NET, jedoch nicht speziell für .NET Core. Die .NET Core-Implementierung löst trotz Konvertierungsversuchen Kompilierungsfehler aus.

Using-Anweisungen:

Um dieses Problem zu beheben, sind die folgenden Using-Anweisungen erforderlich:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using System.IO;
using System.Threading.Tasks;
Nach dem Login kopieren

Project.json-Abhängigkeiten:

Die entsprechenden project.json-Abhängigkeiten sind:

{
  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.1.0",

    ...
  },
}
Nach dem Login kopieren

Controller-Erweiterungsmethode:

Die folgende Erweiterungsmethode kann implementiert werden, um Ansichten als Zeichenfolgen in .NET Core zu rendern:

public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
    if (string.IsNullOrEmpty(viewName))
    {
        viewName = controller.ControllerContext.ActionDescriptor.ActionName;
    }

    controller.ViewData.Model = model;

    using (var writer = new StringWriter())
    {
        IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
        ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);

        if (viewResult.Success == false)
        {
            return $"A view with the name {viewName} could not be found";
        }

        ViewContext viewContext = new ViewContext(
            controller.ControllerContext,
            viewResult.View,
            controller.ViewData,
            controller.TempData,
            writer,
            new HtmlHelperOptions()
        );

        await viewResult.View.RenderAsync(viewContext);

        return writer.GetStringBuilder().ToString();
    }
}
Nach dem Login kopieren

Verwendungsbeispiel:

Die Erweiterungsmethode kann aufgerufen werden aus einem Controller heraus mit der folgenden Syntax:

viewHtml = await this.RenderViewAsync("Report", model);
Nach dem Login kopieren

Für eine Teilansicht:

partialViewHtml = await this.RenderViewAsync("Report", model, true);
Nach dem Login kopieren

Diese Lösung bietet eine starke Typisierung für das Modell, Fehlerbehandlung beim Suchen der Ansicht und asynchron Betrieb.

Das obige ist der detaillierte Inhalt vonWie rendere ich Ansichten als Zeichenfolgen in .NET Core?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage