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

Bagaimana untuk Memberikan Pandangan sebagai Rentetan dalam Teras ASP.NET?

Susan Sarandon
Lepaskan: 2025-01-05 03:18:39
asal
965 orang telah melayarinya

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

Memaparkan Paparan sebagai Rentetan dalam Teras .NET

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.

Menggunakan Sambungan Pengawal untuk Paparan Paparan

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

Menggunakan Kaedah Sambungan

Untuk menggunakan kaedah sambungan, cuma tambah kod berikut pada pengawal anda:

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

Untuk pemaparan pandangan separa:

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

Peningkatan Daripada Yang Asal Kod

Kaedah sambungan yang disediakan termasuk beberapa penambahbaikan berbanding kod asal:

  • Taip kuat untuk model
  • Ralat semasa menyemak paparan tidak ditemui
  • Keupayaan untuk memaparkan kedua-dua pandangan dan pandangan separa
  • Asynchronous pelaksanaan
  • Tiada suntikan pergantungan atau perkhidmatan tambahan diperlukan

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!

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