ASP.NET Core에서 뷰를 문자열로 렌더링하는 것은 보고, 동적 콘텐츠 생성과 같은 시나리오에 종종 필요한 중요한 기능입니다. 또는 테스트 중입니다. 이 문서에서는 .NET Core에서 이를 달성하는 프로세스를 안내하고 기존 코드를 ASP.NET에서 .NET Core로 변환하는 동안 직면하는 특정 문제를 해결합니다.
.NET Core에서 뷰를 문자열로 렌더링하려면 컨트롤러 확장 메서드를 만드는 것이 효과적인 방법입니다. 이 방법은 애플리케이션 내의 모든 컨트롤러에서 뷰에 액세스하고 렌더링하는 편리한 방법을 제공합니다. 구현 예는 다음과 같습니다.
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(); } } } }
확장 메서드를 사용하려면 컨트롤러에 다음 코드를 추가하기만 하면 됩니다.
var viewHtml = await this.RenderViewAsync("Report", model);
렌더링의 경우 부분 보기:
var partialViewHtml = await this.RenderViewAsync("Report", model, true);
제공된 확장 메서드에는 원본 코드에 비해 여러 가지 향상된 기능이 포함되어 있습니다.
이 접근 방식을 활용하면 .NET Core에서 뷰를 문자열로 쉽게 렌더링하고 액세스할 수 있으므로 동적 콘텐츠가 필요한 다양한 시나리오에 유연성을 제공할 수 있습니다. 세대가 필요합니다.
위 내용은 ASP.NET Core에서 뷰를 문자열로 렌더링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!