在 TagHelper 中寻找子元素
Looking for child elements in a TagHelper
我正在编写一个自定义 TagHelper,它应该根据其所有者标签具有的子元素更改其行为。这将用于替换本地化字符串中的自定义 html 元素。
这是我正在尝试做的一个简单示例:
<h2 locale-key="Hello, %1!">
<span class="bold" locale-parameter="1">@userName</span>
</h2>
在上面的示例中,LocaleKey 的 TagHelper 会将 <h2>
标签的内容更改为本地化字符串。如果这是一个没有参数的简单字符串,那么我只需在 TagHelper 中使用 output.Content.SetHtmlContent()
即可将 h2
的内容设置为字符串。但是在这种情况下,本地化字符串有一个参数 (%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>
也是本地化的并且有自己的参数),但对于这个问题的范围,如果我能在没有递归的情况下让它工作,我会很高兴.
我又发布得太早了...TagHelperOutput
中有一个 GetChildContentAsync()
方法可以...异步获取子内容。
我正在编写一个自定义 TagHelper,它应该根据其所有者标签具有的子元素更改其行为。这将用于替换本地化字符串中的自定义 html 元素。
这是我正在尝试做的一个简单示例:
<h2 locale-key="Hello, %1!">
<span class="bold" locale-parameter="1">@userName</span>
</h2>
在上面的示例中,LocaleKey 的 TagHelper 会将 <h2>
标签的内容更改为本地化字符串。如果这是一个没有参数的简单字符串,那么我只需在 TagHelper 中使用 output.Content.SetHtmlContent()
即可将 h2
的内容设置为字符串。但是在这种情况下,本地化字符串有一个参数 (%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>
也是本地化的并且有自己的参数),但对于这个问题的范围,如果我能在没有递归的情况下让它工作,我会很高兴.
我又发布得太早了...TagHelperOutput
中有一个 GetChildContentAsync()
方法可以...异步获取子内容。