asp.net-core - 在 TagHelper 中查找子元素
问题描述
我正在编写一个自定义 TagHelper,它应该根据其所有者标签具有的子元素来更改其行为。这将用于替换本地化字符串中的自定义 html 元素。
这是我正在尝试做的一个简单示例:
<h2 locale-key="Hello, %1!">
<span class="bold" locale-parameter="1">@userName</span>
</h2>
在上面的示例中,LocaleKey 的 TagHelper 会将<h2>
标记的内容更改为本地化字符串。如果这是一个没有参数的简单字符串,那么我可以简单地output.Content.SetHtmlContent()
在 TagHelper 中使用来将h2
's 的内容设置为字符串。但是在这种情况下,本地化字符串有一个参数 ( %1
),我希望<span parameter="1">
在最终输出中替换相应的子元素 ()。所以最终渲染的 html 看起来像这样:
<h2>Hello, <span class="bold">Lázár Zsolt</span>!<h2/>
为此,我应该能够从 LocaleKey TagHelper 中看到 DOM 中的所有子元素,这样我就可以生成正确的 HTML 代码。在 TagHelper 的ProcessAsync
方法中,我可以访问TagHelperContext
和TagHelperOutput
,但是在调试时我找不到任何关于这些对象中的子元素的任何信息。这有可能吗?
另一种方法是保留字符串,使用%1
参数键,然后使用子 ParameterTagHelper 将自身替换为参数化字符串。为此,我必须从 TagHelper 中查看当前标签的兄弟姐妹。
递归也很有趣(例如,<span>
它也是本地化的并且有它自己的参数),但是对于这个问题的范围,如果我可以让它在没有递归的情况下工作,我会很高兴。
解决方案
我再次发布得太早了...有一种GetChildContentAsync()
方法TagHelperOutput
可以...异步获取子内容。
推荐阅读
- html - 在 Node 中按 id 正则表达式搜索 span
- php - 使用动态表单插入数据库
- java - DatePicker 对话框未显示?
- python - 如何迭代嵌套字典结构并对每个字符串进行操作?
- c# - 如何在 C# 的 Web 服务中发送 multipart/form-data?
- swift - UITextfield 类快速调用委托方法
- react-native - 如何从 ReactNative 中的卡片列表中选择特定卡片
- php - php 突然抛出错误“缺少 mysqli 扩展。请检查您的 PHP 配置。有关更多信息,请参阅我们的文档。”
- javascript - 从数学随机更改为 window.crypto
- reactjs - textinput 如何处理值?