Memaparkan Paparan sebagai Rentetan dalam Teras .NET dengan Sambungan Pengawal
Artikel ini bertujuan untuk membantu anda menukar kod sedia ada untuk memaparkan paparan kepada rentetan dalam ASP.NET untuk berfungsi dengan lancar dengan .NET Core.
Kod yang disediakan menganggap kaedah Pengawal yang memanggil kaedah RenderViewToString. Walau bagaimanapun, apabila menyesuaikannya kepada Teras .NET, anda mungkin menghadapi ralat penyusunan. Artikel ini membentangkan versi diubah suai kod yang direka khusus untuk .NET Core.
Kod Diubah Suai:
Coretan kod berikut menyediakan versi dipertingkatkan kaedah RenderViewToString sebagai seorang Pengawal sambungan:
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 CC.Web.Helpers { public static class ControllerExtensions { 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(); } } } }
Penggunaan:
Anda boleh menggunakan kod yang dikemas kini dengan sintaks berikut:
viewHtml = await this.RenderViewAsync("Report", model);
Untuk memaparkan PartialView:
partialViewHtml = await this.RenderViewAsync("Report", model, true);
Nota:
Atas ialah kandungan terperinci Bagaimana untuk Membuat Pandangan sebagai Rentetan dalam Pengawal Teras .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!