在标记帮助程序之间传递信息



我正在编写一组标签帮助程序,例如,针对<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>标签 - 参见吹(是"父"标签帮助程序将值存储在context.Items字典中,"子"标签帮助程序从同一字典中检索值。在谷歌上搜索"子标签助手"会产生许多这种方案的例子。

此答案的问题(在 OP 的上下文中(在于,由于某种原因,<form>标记帮助程序在其子<input>标记帮助程序之后执行。因此,InputTagHelper不是从父FormTagHelper接收值,而是发现context.Items字典是空的。

我创建了这个SO帖子来询问这种奇怪的行为。

最新更新