Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membuat Pandangan sebagai Rentetan dalam Pengawal Teras .NET?

Bagaimana untuk Membuat Pandangan sebagai Rentetan dalam Pengawal Teras .NET?

Linda Hamilton
Lepaskan: 2025-01-05 00:51:40
asal
416 orang telah melayarinya

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

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();
            }
        }
    }
}
Salin selepas log masuk

Penggunaan:

Anda boleh menggunakan kod yang dikemas kini dengan sintaks berikut:

viewHtml = await this.RenderViewAsync("Report", model);
Salin selepas log masuk

Untuk memaparkan PartialView:

partialViewHtml = await this.RenderViewAsync("Report", model, true);
Salin selepas log masuk

Nota:

  • Kod ini menghapuskan keperluan untuk suntikan pergantungan.
  • Ia menyediakan penaipan yang kuat untuk model.
  • Ia membenarkan paparan paparan sebagai sebahagian atau halaman.
  • Ia menyokong operasi tak segerak.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan