Передавать информацию между помощниками тегов?

Я пишу набор помощников тегов, нацеленных, например, на элементы <form> и <input>. Я хочу добавить настраиваемый атрибут к элементу <form> и получить значение этого атрибута в содержащемся элементе <input>. Итак, если мой HTML выглядит так:

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

тогда в моем InputTagHelper я хотел бы получить значение 123, которое было указано для атрибута xx-value.

Есть ли специальный способ передачи таких данных между помощниками тегов?

Рассмотрим случай, когда у меня есть такая разметка:

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

В этом случае первый вызов InputTagHelper получит значение 123. Но второй вызов InputTagHelper получит значение 0, поскольку его родительский тег <form> не определяет магический атрибут xxx-value.


person Bob.at.Indigo.Health    schedule 14.06.2019    source источник
comment
Возможно, Просмотреть компонент в этом случае больше подходит.   -  person Ruard van Elburg    schedule 15.06.2019
comment
Для тега Asp.Net Core нет встроенной функции для удовлетворения ваших требований, вы можете попробовать использовать Front framework, например vue или angular, вместо Razor View. Или вам нужно реализовать свой собственный тег, и вы можете сослаться на Вспомогательные функции тегов в ASP.NET Core   -  person Edward    schedule 17.06.2019


Ответы (1)


Простой ответ (который не работает для тегов <form> и <input> - см. Удар) заключается в том, что вспомогательная функция родительского тега хранит значение в словаре context.Items, а вспомогательная функция дочернего тега (-ы) извлекает значение из тот самый словарь. Поиск в Google по запросу "помощник по дочернему тегу" дает множество примеров этой схемы.

Проблема с этим ответом (в контексте OP) заключается в том, что по какой-то причине вспомогательная функция тега <form> выполняет после своего дочернего помощника тега <input>. Таким образом, вместо получения значения от родительского FormTagHelper, InputTagHelper обнаруживает, что словарь context.Items пуст.

Я создал этот пост в SO, чтобы спросить об этом странном поведении.

person Bob.at.Indigo.Health    schedule 17.06.2019