在标签助手之间传递信息?

Pass info between tag helpers?

我正在编写一组标签助手,例如,针对 <form><input> 元素。我想向 <form> 元素添加自定义属性,并在包含的 <input> 元素中检索该属性的值。所以,如果我的 HTML 看起来像这样:

<form xx-value='123'>
  <input asp-for='Something' />
</form>

然后在我的 InputTagHelper 中,我想检索为 xx-value 属性指定的值 123。

是否有设计好的方式在标签助手之间传递这样的数据?

考虑我有这个标记的情况:

<form xx-value='123'>
  <input asp-for='Something' />
</form>
<form>
  <input asp-for='SomethingElse' />
</form>

在这种情况下,InputTagHelper 的第一次调用将获得值 123。但是 InputTagHelper 的第二次调用将获得值 0,因为其父级 <form>标记没有指定神奇的 xxx 值属性。

简单的答案(不适用于 <form><input> 标签 - 见下文)是 "parent" 标签助手将值存储在 context.Items 字典和 "child" 标签助手从同一个字典中检索值。 Google 搜索 "child tag helper" 会产生许多此方案的示例。

这个答案的问题(在 OP 的上下文中)是,出于某种原因,<form> 标签助手在 其子 [=11] 之后执行 =] 标签助手。因此,InputTagHelper 没有从父 FormTagHelper 接收值,而是发现 context.Items 字典是空的。

我创建 是为了询问这种奇怪的行为。