Is there any way to create a Tag Helper that somehow iterates (repeater like) over the inner tag helpers? That is, something like:
It's possible, by using the TagHelperContext.Items
property. From the doc:
Gets the collection of items used to communicate with other
ITagHelpers
. ThisSystem.Collections.Generic.IDictionary
is copy-on-write in order to ensure items added to this collection are visible only to otherITagHelpers
targeting child elements.
What this means is that you can pass objects from the parent tag helper to its children.
For example, let's assume you want to iterate over a list of Employee
:
public class Employee
{
public string Name { get; set; }
public string LastName { get; set; }
}
In your view, you'll use (for example):
@{
var mylist = new[]
{
new Employee { Name = "Alexander", LastName = "Grams" },
new Employee { Name = "Sarah", LastName = "Connor" }
};
}
and the two tag helpers:
[HtmlTargetElement("big-ul", Attributes = IterateOverAttr)]
public class BigULTagHelper : TagHelper
{
private const string IterateOverAttr = "iterateover";
[HtmlAttributeName(IterateOverAttr)]
public IEnumerable