单击生成的 html 组件时调用方法

Ram*_*ano 3 c# razor blazor

我是 Blazor 的新手,我正在尝试使用 RenderTreeBuilder 创建 HTML 片段。该块基本上是一个 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();
    };
Run Code Online (Sandbox Code Playgroud)

这里的问题是如何附加事件,因为我不能在这里使用@onclick。我想知道我在这里有什么选择,因为我已经看到可以调用事件,但我无法让它工作。

Tim*_*äki 6

您需要使用EventCallbackFactory来调用方法。像这样:

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

然后在同一个类中定义方法:

void YourMethod() {
    // Your code here
}
Run Code Online (Sandbox Code Playgroud)