I'm learning Blazor and ASP.NET and have been learning C# for the last 6 months.
I have made a simple templated component:
@typeparam GenericType
<ul>
@foreach (GenericType item in Items)
{
<li @onclick="(x)=> ItemClicked(item)">FragmentToRender(item)</li>
}
</ul>
@code {
[Parameter] public RenderFragment<GenericType> FragmentToRender { get; set; }
[Parameter] public IReadOnlyList<GenericType> Items { get; set; }
public void ItemClicked(GenericType item)
{
//To figure out...
}
}
And I'm using it in a page component:
<TestComponent GenericType="Thing" Items="ListOfThings">
<FragmentToRender>
<p>@context.Field</p>
</FragmentToRender>
</TestComponent>
@code
{
private List<Thing> ListOfThings =
new List<Thing> {
new Thing("Test"),
new Thing("Test2")
};
public class Thing
{
public readonly string Field;
public Thing(string field) => Field = field;
}
}
When the OnClick event of the li element in the component is triggered, how can I pass the specific instance of the item back to the page component (i.e so a different component can do something with the clicked item like upload it's data somewhere)?
Many Thanks