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

Bagaimana untuk Membuat Pandangan sebagai Rentetan dalam Teras .NET?

Barbara Streisand
Barbara Streisandasal
2025-01-04 19:05:40301semak imbas

How to Render Views as Strings in .NET Core?

Kembalikan Paparan sebagai Rentetan dalam Teras .NET

Masalah:

Banyak artikel yang tersedia menyediakan panduan untuk memberikan pandangan kepada rentetan dalam ASP.NET, tetapi tidak khusus untuk Teras .NET. Pelaksanaan Teras .NET mencetuskan ralat penyusunan walaupun terdapat percubaan pada penukaran.

Menggunakan Penyata:

Untuk menangani isu ini, penyataan menggunakan berikut diperlukan:

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;

Ketergantungan Project.json:

The kebergantungan project.json yang sepadan ialah:

{
  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.1.0",

    ...
  },
}

Kaedah Sambungan Pengawal:

Kaedah sambungan berikut boleh dilaksanakan untuk memaparkan paparan sebagai rentetan dalam Teras .NET:

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();
    }
}

Contoh Penggunaan:

The kaedah sambungan boleh digunakan dari dalam pengawal menggunakan sintaks berikut:

viewHtml = await this.RenderViewAsync("Report", model);

Untuk paparan separa:

partialViewHtml = await this.RenderViewAsync("Report", model, true);

Penyelesaian ini menyediakan penaipan yang kuat untuk model, pengendalian ralat apabila mencari pandangan dan operasi tak segerak.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Pandangan sebagai Rentetan dalam Teras .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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