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
Lepaskan: 2025-01-04 19:05:40
asal
298 orang telah melayarinya

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

Ketergantungan Project.json:

The kebergantungan project.json yang sepadan ialah:

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

    ...
  },
}
Salin selepas log masuk

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

Contoh Penggunaan:

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

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

Untuk paparan separa:

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

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!

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