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

时间:2019-06-14 01:14:57

标签: asp.net-core asp.net-core-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值属性。

1 个答案:

答案 0 :(得分:0)

简单的答案(不适用于$d = dir('.'); while (($file = $d->read()) !== false) { // iterate all files if (preg_match('/\.txt$/', $file)) { // filter only file ends with .txt $contents = explode("\n", file_get_contents($d->path . '/' . $file)); // get file contents, split by \n array_walk($contents, function(&$item) { $item .= ' (' . strlen($item) . ')'; }); // add (length) in the end of each line // display it echo '<strong>' . $file . '</strong><br>'; echo implode('<br>', $contents); echo '<hr>'; } } <form>标签-参见打击)是针对“父”标签助手的,将值存储在<input>字典中,并且供“子级”标签帮助程序从同一词典中检索值。通过Google搜索“儿童标签助手”,可以找到该方案的许多示例。

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

我创建了this SO post来询问这种奇怪的行为。