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

Wie rendere ich Ansichten als Zeichenfolgen in ASP.NET Core?

Susan Sarandon
Freigeben: 2025-01-05 03:18:39
Original
965 Leute haben es durchsucht

How to Render Views as Strings in ASP.NET Core?

Ansichten als Zeichenfolgen in .NET Core rendern

In ASP.NET Core ist das Rendern von Ansichten als Zeichenfolgen eine entscheidende Funktion, die häufig für Szenarios wie Berichterstellung und dynamische Inhaltsgenerierung erforderlich ist , oder testen. Dieser Artikel führt Sie durch den Prozess, dies in .NET Core zu erreichen, und geht auf das spezifische Problem ein, das beim Konvertieren von vorhandenem Code von ASP.NET in .NET Core auftritt.

Verwenden von Controller-Erweiterungen für das Rendern von Ansichten

Um Ansichten als Zeichenfolgen in .NET Core zu rendern, besteht ein effektiver Ansatz darin, eine Controller-Erweiterungsmethode zu erstellen. Diese Methode bietet eine bequeme Möglichkeit, von jedem Controller in Ihrer Anwendung aus auf Ansichten zuzugreifen und diese zu rendern. Hier ist eine Beispielimplementierung:

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;

namespace CoreApp.Helpers
{
    public static class ControllerExtensions
    {
        public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
        {
            // Handle missing view name
            if (string.IsNullOrEmpty(viewName))
            {
                viewName = controller.ControllerContext.ActionDescriptor.ActionName;
            }

            // Set the view data
            controller.ViewData.Model = model;

            using (var writer = new StringWriter())
            {
                // Obtain the view engine
                IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;

                // Find the view
                ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);

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

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

                await viewResult.View.RenderAsync(viewContext);

                // Return the rendered view as a string
                return writer.GetStringBuilder().ToString();
            }
        }
    }
}
Nach dem Login kopieren

Verwenden der Erweiterungsmethode

Um die Erweiterungsmethode zu verwenden, fügen Sie einfach den folgenden Code zu Ihrem Controller hinzu:

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

Zum Rendern eine Teilansicht:

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

Verbesserungen gegenüber dem Originalcode

Die bereitgestellte Erweiterungsmethode umfasst mehrere Verbesserungen gegenüber dem Originalcode:

  • Strong-Typing für das Modell
  • Fehlerprüfung für Ansicht nicht gefunden
  • Möglichkeit, sowohl Ansichten als auch Teilansichten zu rendern
  • Asynchrone Ausführung
  • Keine Abhängigkeitsinjektion oder zusätzliche Dienste erforderlich

Durch die Verwendung dieses Ansatzes können Sie Ansichten einfach als Zeichenfolgen in .NET Core rendern und darauf zugreifen, was Flexibilität für verschiedene Szenarien bietet, in denen eine dynamische Inhaltsgenerierung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie rendere ich Ansichten als Zeichenfolgen in ASP.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