Вызов метода при клике на сгенерированный html компонент - PullRequest
0 голосов
/ 08 февраля 2020

Я довольно новичок в Blazor и пытаюсь создать кусок HTML, используя RenderTreeBuilder. Этот блок в основном является div, который должен вызывать метод при нажатии и сохранять его значение в переменной.

AutocompleteListRender = builder =>
{
    builder.OpenElement(0, "div");
    builder.AddAttribute(0, "id", "input-autocomplete-list");
    builder.AddAttribute(0, "class", "autocomplete-items");

        foreach (string entry in Entries)
        {
            if (entry.ToLower().Contains(Value))
            {
                builder.OpenElement(1, "div");
                builder.AddAttribute(1, "id", entry + "-autocomplete-list");
                builder.AddAttribute(1, "onclick", /* Method to call */);
                builder.AddAttribute(1, "value", @entry);

                builder.AddContent(1, entry);

                builder.CloseElement();
            }
        }

        builder.CloseElement();
    };

Проблема в том, как прикрепить событие, так как я не могу использовать @onclick здесь. Я хотел бы знать, какие у меня есть варианты, так как я видел, что можно вызывать события, но я не могу заставить его работать.

1 Ответ

1 голос
/ 08 февраля 2020

Вам нужно использовать EventCallbackFactory для вызова метода. Например:

builder.AddAttribute(1, "onclick", Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.UIMouseEventArgs>(this, YourMethod));

, а затем определить метод в том же классе:

void YourMethod() {
    // Your code here
}
...