> 백엔드 개발 > C++ > ASP.NET Core에서 뷰를 문자열로 렌더링하는 방법은 무엇입니까?

ASP.NET Core에서 뷰를 문자열로 렌더링하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-05 03:18:39
원래의
965명이 탐색했습니다.

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

.NET Core에서 뷰를 문자열로 렌더링

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿