Dalam Teras ASP.NET, memaparkan paparan sebagai rentetan ialah keupayaan penting yang sering diperlukan untuk senario seperti pelaporan, penjanaan kandungan dinamik , atau ujian. Artikel ini akan membimbing anda melalui proses mencapai ini dalam Teras .NET, menangani isu khusus yang dihadapi semasa menukar kod sedia ada daripada ASP.NET kepada Teras .NET.
Untuk menjadikan paparan sebagai rentetan dalam Teras .NET, pendekatan yang berkesan ialah mencipta kaedah sambungan pengawal. Kaedah ini menyediakan cara yang mudah untuk mengakses dan memberikan paparan daripada mana-mana pengawal dalam aplikasi anda. Berikut ialah contoh pelaksanaan:
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(); } } } }
Untuk menggunakan kaedah sambungan, cuma tambah kod berikut pada pengawal anda:
var viewHtml = await this.RenderViewAsync("Report", model);
Untuk pemaparan pandangan separa:
var partialViewHtml = await this.RenderViewAsync("Report", model, true);
Kaedah sambungan yang disediakan termasuk beberapa penambahbaikan berbanding kod asal:
Dengan menggunakan pendekatan ini, anda boleh membuat dan mengakses paparan dengan mudah sebagai rentetan dalam Teras .NET, memberikan fleksibiliti untuk pelbagai senario di mana kandungan dinamik generasi adalah perlu.
Atas ialah kandungan terperinci Bagaimana untuk Memberikan Pandangan sebagai Rentetan dalam Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!