📜  将部分视图呈现到 html 字符串 dotnet 核心 - Html (1)

📅  最后修改于: 2023-12-03 14:53:55.379000             🧑  作者: Mango

将部分视图呈现到 HTML 字符串 - .NET Core

在 .NET Core 中,我们可以使用 Razor 引擎和视图模板来将部分视图呈现为 HTML 字符串。这种技术非常有用,特别是当我们需要生成动态的 HTML 内容并将其发送给客户端时。

必备资源

在开始之前,确保你已经安装了以下工具和环境:

  • .NET Core SDK
  • Visual Studio Code 或其他文本编辑器
步骤 1: 创建视图部分

首先,我们需要创建一个视图部分,以便稍后将其呈现为 HTML 字符串。视图部分是一个包含 HTML 和 Razor 代码的文件,它可以被其他视图或页面引用。

在你的 .NET Core 项目中,创建一个新文件夹 Views/Shared,然后在该文件夹中创建一个名为 MyPartialView.cshtml 的文件。在该文件中添加以下内容:

<h2>Hello from MyPartialView!</h2>
<p>Current date and time: @DateTime.Now</p>
步骤 2: 创建 Controller

接下来,我们需要创建一个控制器来处理请求并呈现视图部分。在你的项目中创建一个名为 HomeController.cs 的文件,添加以下内容:

using Microsoft.AspNetCore.Mvc;

public class HomeController : Controller
{
    public IActionResult Index()
    {
        string htmlString = RenderPartialToString("MyPartialView"); 
        // Replace "MyPartialView" with the actual name of your partial view

        return Content(htmlString, "text/html");
    }

    private string RenderPartialToString(string partialName, object model = null)
    {
        ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            var engine = ViewEngines.Default;
            var viewResult = engine.FindView(ControllerContext, partialName, false);

            var viewContext = new ViewContext(
                ControllerContext,
                viewResult.View,
                ViewData,
                TempData,
                sw,
                new HtmlHelperOptions()
            );

            viewResult.View.RenderAsync(viewContext);

            return sw.GetStringBuilder().ToString();
        }
    }
}
步骤 3: 注册路由和设置启动页

在你的项目中找到 Startup.cs 文件,在 ConfigureServices 方法内添加以下代码:

services.AddControllersWithViews();

Configure 方法内添加以下代码:

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});
步骤 4: 运行应用程序

现在,你可以运行你的应用程序并访问 /Home/Index 路径。你将看到控制器将视图部分呈现为 HTML 字符串并返回给客户端。

总结

通过使用 Razor 引擎和视图模板,我们可以轻松地将部分视图呈现为 HTML 字符串。这使得在 .NET Core 应用程序中生成动态的 HTML 内容变得非常简单和高效。

希望本文对你有所帮助!如有任何疑问,请随时提问。