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.
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(); } } } }
Um die Erweiterungsmethode zu verwenden, fügen Sie einfach den folgenden Code zu Ihrem Controller hinzu:
var viewHtml = await this.RenderViewAsync("Report", model);
Zum Rendern eine Teilansicht:
var partialViewHtml = await this.RenderViewAsync("Report", model, true);
Die bereitgestellte Erweiterungsmethode umfasst mehrere Verbesserungen gegenüber dem Originalcode:
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!