【问题标题】:Pass info between tag helpers?在标签助手之间传递信息?
【发布时间】:2019-06-17 14:49:34
【问题描述】:

我正在编写一组标签助手,例如,<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,因为其父标签 &lt;form&gt; 没有指定魔法 xxx -value 属性。

【问题讨论】:

  • 也许View component 更适合这种情况。
  • 对于 Asp.Net Core 标签,没有内置功能可以满足您的要求,您可以考虑尝试像 vue 或 angular 这样的 Front 框架,而不是 Razor View。或者,你需要实现自己的标签,你可以参考Tag Helpers in ASP.NET Core

标签: asp.net-core asp.net-core-tag-helpers


【解决方案1】:

简单的答案(不适用于 &lt;form&gt;&lt;input&gt; 标签 - 请参阅打击)是“父”标签助手将值存储在 context.Items 字典和“子”标签助手从同一个字典中检索值。 Google 搜索“child tag helper”会产生许多这种方案的示例。

这个答案的问题(在 OP 的上下文中)是,由于某种原因,&lt;form&gt; 标签助手在 之后执行其子 &lt;input&gt; 标签助手。因此,InputTagHelper 发现 context.Items 字典为空,而不是从父 FormTagHelper 接收值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-01-25
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多