我正在编写一组标签帮助程序,例如,针对<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帖子来询问这种奇怪的行为。