我是 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。我想知道我在这里有什么选择,因为我已经看到可以调用事件,但我无法让它工作。
您需要使用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)