如何在 ASP.NET Core 中的自定义 TagHelper 中渲染 Razor 模板?

2023-11-25

我正在创建一个自定义 HTML 标记帮助程序:

public class CustomTagHelper : TagHelper
    {
        [HtmlAttributeName("asp-for")]
        public ModelExpression DataModel { get; set; }

        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            string content = RazorRenderingService.Render("TemplateName", DataModel.Model);
            output.Content.SetContent(content);
        }
    }

如何以编程方式渲染部分视图并以 TagHelper.ProcessAsync 内的字符串形式获取渲染内容?
我应该请求注入 IHtmlHelper 吗?
是否可以获得剃须刀引擎的参考?


可以请求在自定义 TagHelper 中注入 IHtmlHelper:

public class CustomTagHelper : TagHelper
    {
        private readonly IHtmlHelper html;

        [HtmlAttributeName("asp-for")]
        public ModelExpression DataModel { get; set; }

        [HtmlAttributeNotBound]
        [ViewContext]
        public ViewContext ViewContext { get; set; }

        public CustomTagHelper(IHtmlHelper htmlHelper)
        {
            html = htmlHelper;
        }
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            //Contextualize the html helper
            (html as IViewContextAware).Contextualize(ViewContext);

            var content = await html.PartialAsync("~/Views/path/to/TemplateName.cshtml", DataModel.Model);
            output.Content.SetHtmlContent(content);
        }
    }

The IHtmlHelper提供的实例尚未准备好使用,有必要将其置于上下文中,因此(html as IViewContextAware).Contextualize(ViewContext);陈述。

The IHtmlHelper.Partial然后可以使用方法来生成模板。

信用去往弗兰克·阿布鲁泽塞对于他的评论从标签助手渲染部分模板的工具.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET Core 中的自定义 TagHelper 中渲染 Razor 模板? 的相关文章

  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • BufferBlock 连续

    我想使用以下方式实现消费者 生产者模式BufferBlock
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • C语言中没有循环可以打印数组吗?

    例如 在Python中 如果我们将一个列表作为数组 它会直接用一行代码打印整个数组 有什么办法可以用C语言实现同样的事情吗 简短回答 No 对表格上几乎所有问题的简短回答 用 C 语言做 X 工作能像用 Python 一样简单吗 No 长答
  • C# 实体框架我们应该使用 POCO.Id 还是仅使用 POCO 设置关系?

    我在服务方法中遇到一种情况 将 POCO 分配为另一个 POCO 的子对象无法按预期工作 我正在使用实体框架 4 public void ChangeOrderCurrency Currency currency order Currenc
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 从二进制文件读取字节到 long int

    我有两个问题 我有二进制文件的数据 我想使用 read 函数读取前 8 个字节以签署 long int 但我不能 你知道我该怎么做吗 如何直接读取一块数据到字符串中 我可以像所示那样阅读吗 前任 ifstream is is open te
  • 主构造函数不再在 VS2015 中编译

    直到今天 我可以使用主构造函数 例如 public class Test string text private string mText text 为了能够做到这一点 在以前的 Visual Studio CTP 中 我必须将其添加到 c
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • Code::Blocks 中的调试似乎不起作用 - 缺少调试符号

    我正在尝试在 Code Blocks 中调试程序 我跟着本指南 http wiki codeblocks org index php title Debugging with Code Blocks and 这个短视频 http www y
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com

随机推荐

  • 将用户设置存储到应用程序文件夹中

    我正在使用 C 应用程序中的设置 如下所示 String str Properties Settings Default SETTINGS NAME 当我保存此设置时 会在以下位置创建一个设置文件 C Documents and Setti
  • jQuery 同位素过滤器没有项目?

    我使用同位素来过滤具有多个过滤器的列表 其中根据某些过滤器的组合 可能不会显示任何项目 在这种情况下 我想向用户显示一条消息 根据他们的过滤器参数 不存在结果 我该如何解决这个问题 同位素是否有内置的东西来处理这个问题 这是一个 jsfid
  • 如何通过注册表确定 32 位 Visual Studio 2013 可再发行组件是否已可靠地安装在用户计算机上?

    我在用部署大师使用 Qt 为用 C 编写的 32 位 Windows 应用程序构建安装程序 可执行文件依赖于 Visual Studio 2013 可再发行组件 即32 位 Visual Studio 2013 可再发行版必须由最终用户在运
  • Ember.js 将现有记录克隆到存储中

    我正在努力思考 Ember js 会喜欢的概念 我想要的是以下内容 我现在有一个现有的 Ember 数据模型 名为Article 让我们说id共 1 个将显示在 article 1 当用户点击 新建 按钮时 他们将转换到 article n
  • 如何在 tkinter 窗口顶部添加问号 [?] 按钮

    我想为我的 python tkinter 项目创建一个窗口 该窗口顶部有一个问号按钮 如下所示 无论如何我可以做到这一点吗 我想我已经成功了 from PIL import Image ImageTk import tkinter as t
  • 哪个 haskell 库可以让我将 2D 数组/向量保存到 png/jpg/gif... 文件?

    我正在玩哈斯克尔 从简单的绘图程序开始 以弄湿我的脚 我需要一个库 可以让我将 2D 数组 向量保存到图像文件中 我不想写颜色列表 我想使用用于数组 向量之类的计算的容器 并且可以 嗯 almost 自动并行化 EDIT存储彩色图像的能力是
  • ModelForm 中的 DurationField 格式

    我有一个包含持续时间字段的 Django 模型 class Entry models Model duration models DurationField 我想使用 ModelForm 为该模型渲染一个表单 class EditEntry
  • 为什么 hash() 在 python3.4 下比 python2.7 慢

    我正在使用 timeit 进行一些性能评估 发现 python 2 7 10 和 python 3 4 3 之间的性能下降 我把范围缩小到hash 功能 蟒蛇2 7 10 gt gt gt import timeit gt gt gt ti
  • 在网页中添加Google搜索

    我想向静态网站添加搜索 最简单的方法是通过将 site www acme com 附加到实际查询中来简单地查询 Google 以便 Google 将搜索限制到该网站 理想情况下 我想在浏览器中执行此操作 以避免在服务器上安装 PHP 使用表
  • PySpark 根据名称将列表分解为多列

    您好 我正在处理一种稍微困难的文件格式 我正在尝试清理该格式以供将来处理 我一直在使用 Pyspark 将数据处理成数据帧 该文件看起来类似于 AA 1234 ZXYW BB A 890 CC B 321 AA 1234 LMNO BB D
  • 将文件夹从主包复制到 iPhone 中的文档目录

    我有一个应用程序 其中我的主包中有一个名为 Images 的文件夹 在此文件夹中还有另一个名为 Images1 的文件夹 其中包含一些图像 当我的应用程序启动时 我想要文档目录中的文件夹 图像 我想从文件夹 Images1 中获取图像 但我
  • 弦乐实习

    在下面的代码中 我正在检查对象引用的相等性 string x Some Text string y Some Other Text string z Some Text Console WriteLine object ReferenceE
  • 转换为 ARC - LLVM 编译器 3.0 错误

    我打开了我的一个旧项目并选择Convert to Objective C ARC从编辑 重构菜单 我收到以下错误 Apple LLVM compiler 3 0 Error Error in format of file Users myU
  • XPath:从子节点获取父节点

    我需要获取子节点的父节点title 50 目前我只使用 title 50 我怎样才能得到它的父母 结果应该是store node
  • 如何使用 Webpack 和 Angular2 包含外部 css 文件?

    我正在尝试使用 Webpack 添加对 Angular2 中 CSS 文件的外部引用 我的CSS定义为 test css loader style loader css loader 在我的 webpack config js 文件中 在打
  • Ruby:将转义字符串写入 YAML

    下列 require yaml test I m a b d string File open test yaml w do out out write test to yaml end 输出 this is a b d string 我怎
  • Lucene.Net 写/读同步

    我可以写 与IndexWriter 在打开阅读时将新文档放入索引 使用IndexReader 或者我必须在写作之前关闭阅读 我可以阅读 搜索文档吗 使用IndexReader 在索引中 当它打开用于写入时 与IndexWriter 或者我必
  • 扭曲应用程序的 Web 界面

    我有一个用 Twisted 编写的应用程序 我想添加一个 Web 界面来控制和监视它 我需要大量的动态页面来显示当前状态和配置 因此我希望有一个框架至少提供一种具有继承和一些基本路由的模板语言 因为我正在使用 Twisted 无论如何我想使
  • Firebase 更改显示在谷歌登录警报上的应用程序名称?

    我有一个 firebase 项目 但不知何故我输错了应用程序名称 有没有办法更改谷歌登录警报上显示的应用程序名称 您应该更改项目中的产品名称
  • 如何在 ASP.NET Core 中的自定义 TagHelper 中渲染 Razor 模板?

    我正在创建一个自定义 HTML 标记帮助程序 public class CustomTagHelper TagHelper HtmlAttributeName asp for public ModelExpression DataModel