Blazor контролирует DOM-дерево и js, который применяется для этого плеера, наглым образом вторгается в это DOM-дерево, втыкая разметку, а потом кеширует это. Blazor во время рендера старается как можно меньше времени работать с домом, поэтому использует подкапотный итератор элементов.
public RenderFragment BuildPlayer() => builder =>
{
unchecked
{
builder.OpenElement(iterator++, "div");
builder.AddAttribute(iterator++, "Id", "video");
builder.OpenElement(iterator++, "div");
builder.AddAttribute(iterator++, "Id", "kin-x");
builder.AddAttribute(iterator++, "data-height", "640");
builder.AddAttribute(iterator++, "data-title", Movie?.Title);
builder.CloseElement();
builder.CloseElement();
}
};
В нормальной ситуации, тут надо писать руками ( 0 1 2 3 4 5 6 7 8 ). Это делается для того, чтобы выдать id для куска дома. И когда что-то изменится, blazor рассчитал, что изменилось и изменил только это. В нормальной ситуации - это было бы преступление такое писать, но в данном случае js вмешивается в дом, поэтому приходится портить оптимизацию для этого участка.